【问题标题】:Find all index of list containing a value Python [duplicate]查找包含值Python的列表的所有索引[重复]
【发布时间】:2017-11-19 12:04:03
【问题描述】:

我有 2 个列表

lst = [1,2,3,4,5,1,2,1,2,3]
lst2 = [1,2,3]

我试图查看lst 中的索引元素在lst2 中。目前我正在做;

ind = []
for x in lst2:
    if x in lst:
        ind.append(lst.index(x))

我意识到问题是lst.index(x) 只返回元素的第一次出现,所以x=1 将始终返回lst.index(1) = 0

有没有办法返回包含该元素的所有索引?

【问题讨论】:

  • 这类操作看起来像是想用集合来实现。查找索引的实际目的是什么?
  • 我已经预测数据和观察数据,存储在 DataFrames 中。我需要这些索引来查找两个索引中的日期何时相同,以便我可以比较几个不同的字段。

标签: python python-2.7 list indexing


【解决方案1】:

你可能会使用类似的东西

ind = [[i for i, value in enumerate(lst) if value == x] for x in lst2]

我不知道这个操作的目的,但使用字典理解可能更有用:

ind = {x: [i for i, value in enumerate(lst) if value == x] for x in lst2}

因为在这种情况下你会得到这样的输出:{1: [0, 5, 7], 2: [1, 6, 8], 3: [2, 9]},这可能更容易使用。

【讨论】:

    【解决方案2】:

    这可以满足您的要求:

    ind = [i for i, x in enumerate(lst) for y in lst2 if x == y]
    

    【讨论】:

    • 文档是怎么说的?搜索“Python 方法枚举”。
    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 2020-05-08
    • 1970-01-01
    • 2015-03-26
    • 2020-10-07
    • 2023-03-15
    • 1970-01-01
    • 2014-01-22
    相关资源
    最近更新 更多