我会以更清楚的方式表达:我得到了提问者在上面的链接中提出的问题,例如
for i in [1,2,3], j in [3,2,1]:
print i,j
cmp(i,j) #do_something(i,j)
但
L1:对于 [1,2,3] 中的 i 和 [3,2,1] 中的 j:不起作用
Q1。但这很有趣这里发生的事情:
for i in [1,2,3], j in [3,2,1]:
print i,j
[1, 2, 3] 0
False 0
Q2。如何使 L1 之类的东西工作?
不是真正的多线程或并行。(这是两个并发任务而不是循环内的循环)然后比较两者的结果。
这里的列表是数字。我的情况不是数字:
for i in f_iterate1() and j in f_iterate2():
更新:下面的 abarnert 是对的,我在某处定义了 j。所以现在是:
>>> for i in [1,2,3], j in [3,2,1]:
print i,j
Traceback (most recent call last):
File "<pyshell#142>", line 1, in <module>
for i in [1,2,3], j in [3,2,1]:
NameError: name 'j' is not defined
而且我不想压缩两个迭代函数!但是在类似 for 循环的情况下同时处理它们。问题仍然是如何在 python 中实现。
更新#2:解决了相同长度的列表
>>> def a(num):
for x in num:
yield x
>>> n1=[1,2,3,4]
>>> n2=[3,4,5,6]
>>> x1=a(n1)
>>> x2=a(n2)
>>> for i,j in zip(x1,x2):
print i,j
1 3
2 4
3 5
4 6
>>>
[解决了]
Q3。如果 n3=[3,4,5,6,7,8,78,34] 大于 n1,n2 怎么办。zip 在这里不起作用。像 izip_longest 之类的东西?izip_longest 足够好。