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']