Python遍历两个列表

Python遍历两个列表,python,list,traversal,Python,List,Traversal,我在一篇教程中发现了这样一句话: for x,y in [(x,y) for x in listA for y in listB]: 现在,对于我来说,我明白了,station将遍历listA和listB,x是listA的值,y是listB的值。但在本例中,两个列表的长度相同。如果一个列表比另一个长,这个语句是否也会给出所有对,或者我必须使用不同的语句 提前感谢。代码计算笛卡尔积(),而不是按照您的建议 例如,如果输入为[1,2,3]和[4,5],则结果为: (1,4) (1,5) (

我在一篇教程中发现了这样一句话:

    for x,y in [(x,y) for x in listA for y in listB]:
现在,对于我来说,我明白了,station将遍历listA和listB,x是listA的值,y是listB的值。但在本例中,两个列表的长度相同。如果一个列表比另一个长,这个语句是否也会给出所有对,或者我必须使用不同的语句


提前感谢。

代码计算笛卡尔积(),而不是按照您的建议

例如,如果输入为
[1,2,3]
[4,5]
,则结果为:

(1,4)
(1,5)
(2,4)
(2,5)
(3,4)
(3,5)
为了进行比较,
zip([1,2,3],[4,5])
的结果是:

(1,4)
(2,5)
如您所见,zip(或)将丢弃较长参数中的附加项

其变体使用任意值替换这些缺少的元素。例如,
iterttools.izip_longest([1,2,3],[4,5],99)
返回:

(1,4)
(2,5)
(3,99)

该示例将生成
listA
listB
中所有项目的所有组合。把它想象成写作

for x in listA:
    for y in listB:
        …

我想为同时遍历两个列表添加一个答案

alist = [1,2,3,4,5]
blist = [6,7,8,9,0]

for a,b in zip(alist,blist):
    print a,"+",b,'=',a+b
它将提供如下输出:

1 + 6 = 7
2 + 7 = 9
3 + 8 = 11
4 + 9 = 13
5 + 0 = 5

OP可能仍在寻找:因此,即使一个列表的元素比另一个列表的元素多,也会有所有可能的对编辑:啊,现在我看到了示例。thanks@markus:好吧,如果你得到了所有的组合,那么长度就无关紧要了。@Felix Kling已经在编辑中包含了这个。包括;)“zip(..)确实要求两个输入具有相同的长度。”->这不是真的,它将丢弃较长列表中的元素。伙计,这很容易回答,只需在python中键入一些内容。如果你想学习python,你真的需要使用它。我不是批评你问问题,只是说你应该交互式地使用python(在提示下,而不是编写程序)——这是一项有用的技能,你可以通过快速实验节省大量时间。我发现在这种语法恐惧中,没有什么“好”的地方。正如您刚刚从@phihags中发现的,答案是:您没有理解这行代表什么。只是因为编译的东西不能使其正确编码-这不容易阅读,因此违背了python的主要原则之一。我还没有完全确定,所以我想,与其道歉,不如问:-D@andrewcooke-键入这个问题看起来花费的时间是在Python提示符中键入示例代码所花费时间的3倍。为什么人们如此害怕先尝试这些陈述?问一下也没关系o) 我只是想,也许你不知道你可以交互地使用python,或者不知道它有多有用。。。。