Python 打印列表中的项目给出了很多结果

Python print item in list gives lots of results

a = [1,2,3]
b = [4,5,6]
#i have 2 lists
for x in a:
 for y in b:
  print x,' vs ',y

Then i got

1 vs 4 , 1 vs 5, 1 vs 6 ,2 vs 4 ... and so on

我只需要 3 个结果 :- 1对4 2对5 3 对 6

表示 a 上的第 1 项与 b 上的第 1 项,第 2 项与第 2 项,第 3 项与第 3 项 请帮助我

a = [1,2,3]
b = [4,5,6]

for first, second in zip(a,b):
    print(first, ' vs ', second)

zipab 的值联系在一起。所以zip(a,b)的第一个元素是[1,4],下一个元素是[2,5]等等。 请注意,zip 创建了一个迭代器,因此您不能通过索引直接访问元素(zip(a,b)[1] 不起作用)。

试试这个:

a = [1,2,3]
b = [4,5,6]
[print('{0} vs {1}'.format(x,y)) for (x,y) in zip(a, b)]

Zip 会将您的两个列表加入 ((1, 4), (2, 5), (3, 6))

其他答案都很好,另一种方法是使用枚举。

for i, x in enumerate(a):
    print x," vs ", b[i]

这会生成一个压缩的排序列表,其中每个值都与其在列表中的索引值配对。例如。 enumerate([1, 2, 3]) => [(0, 1), (1, 2), (2, 3)].

试试这位兄弟:

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

for i, j in zip(x, y):
print i + " / " + j

它会给你:

1 / 4
2 / 5
3 / 6

同时检查:"for loop" with two variables?

Zip 非常适合您的用例。

关于 zip 的更多信息: https://docs.python.org/2/library/functions.html#zip

a = [1,2,3]
b = [4,5,6]
for x in zip(a,b):
    print x[0],' vs ',x[1]

注意:如果您的列表大小不同,zip 将在最小元素处停止

谢谢大家 zip(a,b) 和 enumerate(a,b) 都运行良好,但如果我有像 a = [1,2,3,4] 和 b = [1,2,3] 这样的列表然后 zip(a,b) 仅工作 1,1 2,2 3,3 并且第 4 个变量不可见并且枚举方法运行良好但最终给出了超出范围的错误:)