如何计算在同一索引中出现的两个列表中相似元素的总数?

时间:2018-04-14 10:45:02

标签: python

让这两个清单

x = [0,1,2,2,5,2,1,0,1,2]
y = [0,1,3,2,1,4,1,3,1,2]

如何在python中找到这两个列表中的类似元素并打印它们。 我在做什么 -

for i, j in x, y:
   if x[i] == y[j]:
      print(x[i], y[j])

我想找到像x [0],y [0]和x [1],y [1]等元素。 这不起作用,我是python的新手。 我想找到元素常见的确切索引。 我想找到索引0,1,3,6,8,9;因为这些指数的元素是相等的

2 个答案:

答案 0 :(得分:0)

x = [0,1,2,2,5,2,1,0,1,2]
y = [0,1,3,2,1,4,1,3,1,2]

for i in range(len(x)):
  if x[i] == y[i]:
    print(i)

注意:如果列表不在同一个len中,这将产生索引超出范围的错误

答案 1 :(得分:0)

  

我想找到元素共同的确切索引。

enumerate压缩序列:

>>> x = [0,1,2,2,5,2,1,0,1,2]
>>> y = [0,1,3,2,1,4,1,3,1,2]
>>> [i for i, (a, b) in enumerate(zip(x, y)) if a == b]
[0, 1, 3, 6, 8, 9]

zip(x, y)会在同一索引处为xy提供一对元素:

>>> zip(x, y)
[(0, 0), (1, 1), (2, 3), (2, 2), (5, 1), (2, 4), (1, 1), (0, 3), (1, 1), (2, 2)]

枚举此序列可为您提供每个项目的索引:

>>> list(enumerate(zip(x, y)))
[(0, (0, 0)), (1, (1, 1)), (2, (2, 3)), (3, (2, 2)), (4, (5, 1)), (5, (2, 4)), (6, (1, 1)), (7, (0, 3)), (8, (1, 1)), (9, (2, 2))]

如您所见,元素具有(int,(int,int))结构。这些元组在列表解析中使用for i, (x, y) in ...语法解压缩。 最后,我们只关心(int,int)部分在两个位置(if a == b)保持相同整数的那些,并且在这些匹配中,我们只采用索引i