【问题标题】:Find all index position in list based on partial string inside item in list根据列表中项目内的部分字符串查找列表中的所有索引位置
【发布时间】:2013-01-28 17:56:42
【问题描述】:
mylist = ["aa123", "bb2322", "aa354", "cc332", "ab334", "333aa"]

我需要包含'aa' 的所有项目的索引位置。我无法将enumerate() 与部分字符串匹配结合起来。我什至不确定我是否应该使用枚举。

我只需要返回索引位置:0,2,5

【问题讨论】:

    标签: python list substring enumerate


    【解决方案1】:

    您使用enumerate() 的想法是正确的。

    indices = []
    for i, elem in enumerate(mylist):
        if 'aa' in elem:
            indices.append(i)
    

    或者,作为列表理解:

    indices = [i for i, elem in enumerate(mylist) if 'aa' in elem]
    

    【讨论】:

    • 如何将列表理解扩展到而不是 "if 'aa'" 为 "if ["aa","bb"] in elem" ??
    【解决方案2】:
    indices = [i for i, s in enumerate(mylist) if 'aa' in s]
    

    【讨论】:

    • 你如何让它不区分大小写?
    • @abbood - 通过比较s.lower()
    • 如果我只想为第一个匹配获取单个索引怎么办?
    • @shashwat - 您不必使用括号中的生成器表达式来创建列表。你可以使用它来创建一个生成器gen = (),然后调用next
    • 如果可以请举例说明我如何使用它?我对 Python 完全陌生。
    【解决方案3】:

    没有enumerate()

    >>> mylist = ["aa123", "bb2322", "aa354", "cc332", "ab334", "333aa"]
    >>> l = [mylist.index(i) for i in mylist if 'aa' in i]
    >>> l
    [0, 2, 5]
    

    【讨论】:

    • 这很可能在 O(n^2) 中运行,而使用 enumerate 将是 O(n)。
    • 如果包含 'aa' 的字符串之一重复,这将返回错误结果。
    【解决方案4】:
    spell_list = ["Tuesday", "Wednesday", "February", "November", "Annual", "Calendar", "Solstice"]
    
    index=spell_list.index("Annual")
    print(index)
    

    【讨论】:

    • 这没有回答问题。使用该方法但只指定 list.index('an') 时会抛出值错误。该方法将无法找到年度。
    • 对。这是对所提问题的错误答案。
    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 2014-10-13
    • 2019-07-21
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2017-04-03
    • 2019-04-29
    相关资源
    最近更新 更多