【问题标题】:How to find the indexes of matches in two lists如何在两个列表中查找匹配的索引
【发布时间】:2013-01-20 23:20:50
【问题描述】:

我目前一直在尝试为以下列表理解问题找到一个很好的解决方案:

很容易在两个列表中找到具有相同索引的相等值,例如

>>> vec1 = [3,2,1,4,5,6,7]
>>> vec2 = [1,2,3,3,5,6,9]
>>> [a for a, b in zip(vec1, vec2) if a == b]
[2,5,6]

但是,我只需要出现这些匹配项的列表中的索引,而不是值本身。使用上面的例子,我想要的输出是:[1,4,5]

我四处修补,但我只能想到一个“多线”解决方案。有人知道我如何以更 Python 的方式找到索引吗?

【问题讨论】:

  • 你打算用索引做什么?
  • @KarlKnechtel:问得好。你是数学家吗?

标签: python list list-comprehension


【解决方案1】:

你很亲密,在这里使用enumerate()

enumerate() 返回一个元组,其中第一个元素是索引,第二个元素是从可迭代对象中获取的数据。

In [169]: vec1 = [3,2,1,4,5,6,7]

In [170]: vec2 = [1,2,3,3,5,6,9]

In [171]: [i for i,(a, b) in enumerate(zip(vec1, vec2)) if a == b]
Out[171]: [1, 4, 5]

【讨论】:

    【解决方案2】:
    [i for i, (a,b) in enumerate(zip(vec1,vec2)) if a==b]
    

    【讨论】:

      猜你喜欢
      • 2021-05-19
      • 1970-01-01
      • 2018-08-21
      • 2013-08-12
      • 2021-03-10
      • 2014-02-24
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多