【问题标题】:Finding the indices of the values of one list in another list在另一个列表中查找一个列表的值的索引
【发布时间】:2014-12-21 14:04:28
【问题描述】:

我有两个 Python 整数列表:xyx 的所有元素都出现在 y 中的某处,并且只出现一次。对于x的每个元素,我想知道y中对应值的索引。然后我想将这些索引设置为列表z

下面的代码就像我刚才描述的那样工作。但是,对于我怀疑可能在几行左右的时间内有一个更优雅的解决方案的任务来说,这似乎有点笨拙。因此,我的问题是,以下代码可以重写的最少行数是多少?

z = [0 for i in range(len(x))]
for i, j in enumerate(x):
    for k, l in enumerate(y):
        if j==l:
            z[i] = k
            break

【问题讨论】:

  • 列表确实有一个.index() 方法。

标签: python


【解决方案1】:

这是一种方法:

z = [y.index(i) for i in x]

【讨论】:

  • 就是这样。
  • 请注意,虽然这对于小型列表在实践中可能不是问题,但它具有二次行为,因此对于大型列表来说会很慢。 (你最终会通过y 扫描len(x) 次,而实际上你只需要这样做一次。)
猜你喜欢
  • 2021-09-12
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 2022-07-30
  • 2019-10-28
  • 1970-01-01
相关资源
最近更新 更多