Py学习  »  Python

Python列表:如果没有前缀,则添加前缀

Aaryan • 3 年前 • 1248 次点击  

下面是一个类似的列表,其中一些前缀是“abc_”,而另一些则不是。

什么样的方法可以有效地为那些没有前缀的设置前缀?

(基本上,我需要它们都有前缀“abc_u”)

my_list = ['abc_apple','abc_orange','cherry','abc_berry','banana']

所需输出:

my_list = ['abc_apple','abc_orange','abc_cherry','abc_berry','abc_banana']

有没有可能用列表理解来做这件事?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133740
 
1248 次点击  
文章 [ 4 ]  |  最新文章 3 年前
Jason Yang
Reply   •   1 楼
Jason Yang    3 年前

尝试方法 map 生成一个迭代器,该迭代器使用每个ITerable的参数计算函数。

>>> 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']
Raj Patel
Reply   •   2 楼
Raj Patel    3 年前
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
Tzane
Reply   •   3 楼
Tzane    3 年前

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

Abhyuday Vaish
Reply   •   4 楼
Abhyuday Vaish    3 年前

不要用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']