代码之家  ›  专栏  ›  技术社区  ›  Aaryan

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

  •  -2
  • Aaryan  · 技术社区  · 4 年前

    下面是一个类似的列表,其中一些前缀是“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']
    

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

    4 回复  |  直到 4 年前
        1
  •  2
  •   Abhyuday Vaish    4 年前

    不要用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']
    
        2
  •  2
  •   Tzane Seçkin Berkay Öztürk    4 年前

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

        3
  •  1
  •   Raj Patel    4 年前
    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
    
        4
  •  0
  •   Jason Yang    4 年前

    尝试方法 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']