Python 列表:如果没有前缀则添加前缀
Python List : add Prefix if it is not Prefixed
我有如下列表,其中一些以“abc_”为前缀,而另一些则没有。
为没有前缀的那些添加前缀的有效方法是什么?
(基本上,我需要他们都有前缀“abc_”)
my_list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
要求输出:
my_list = ['abc_apple','abc_orange','abc_cherry','abc_berry','abc_banana']
是否可以使用列表理解来做到这一点?
list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
for i in range(len(list)):
if 'abc_' in list[i]:
pass
else:
list[i] = 'abc_' + list[i]
list
输出:
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']
或
list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
for i in range(len(list)):
if 'abc_' not in list[i]:
list[i] = 'abc_' + list[i]
list
或更好的答案
list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
for i in range(len(list)):
if list[i].startswith('abc_'):
pass
else:
list[i] = 'abc_' + list[i]
list
不要使用 Python 关键字命名列表。 list
是 Python 中的关键字。您可以使用列表理解来使用 .startswith()
:
list1 = ['abc_apple','abc_orange','cherry','abc_berry','banana']
list1 = ['abc_'+i if not i.startswith('abc_') else i for i in list1]
print(list1)
输出:
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']
只要关注 if/else in a list comprehension 你就可以做这样的事情:
my_list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
my_list = [f"abc_{word}" if not word.startswith("abc_") else word for word in my_list]
print(my_list)
输出:
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']
尝试使用方法 map
创建一个迭代器,该迭代器使用来自每个可迭代对象的参数来计算函数。
>>> lst = ['abc_apple','abc_orange','cherry','abc_berry','banana']
>>> result = list(map(lambda x:x if x.startswith('abc_') else 'abc_'+x, lst))
>>>
>>> result
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']
我有如下列表,其中一些以“abc_”为前缀,而另一些则没有。
为没有前缀的那些添加前缀的有效方法是什么?
(基本上,我需要他们都有前缀“abc_”)
my_list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
要求输出:
my_list = ['abc_apple','abc_orange','abc_cherry','abc_berry','abc_banana']
是否可以使用列表理解来做到这一点?
list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
for i in range(len(list)):
if 'abc_' in list[i]:
pass
else:
list[i] = 'abc_' + list[i]
list
输出:
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']
或
list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
for i in range(len(list)):
if 'abc_' not in list[i]:
list[i] = 'abc_' + list[i]
list
或更好的答案
list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
for i in range(len(list)):
if list[i].startswith('abc_'):
pass
else:
list[i] = 'abc_' + list[i]
list
不要使用 Python 关键字命名列表。 list
是 Python 中的关键字。您可以使用列表理解来使用 .startswith()
:
list1 = ['abc_apple','abc_orange','cherry','abc_berry','banana']
list1 = ['abc_'+i if not i.startswith('abc_') else i for i in list1]
print(list1)
输出:
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']
只要关注 if/else in a list comprehension 你就可以做这样的事情:
my_list = ['abc_apple','abc_orange','cherry','abc_berry','banana']
my_list = [f"abc_{word}" if not word.startswith("abc_") else word for word in my_list]
print(my_list)
输出:
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']
尝试使用方法 map
创建一个迭代器,该迭代器使用来自每个可迭代对象的参数来计算函数。
>>> lst = ['abc_apple','abc_orange','cherry','abc_berry','banana']
>>> result = list(map(lambda x:x if x.startswith('abc_') else 'abc_'+x, lst))
>>>
>>> result
['abc_apple', 'abc_orange', 'abc_cherry', 'abc_berry', 'abc_banana']