嵌套for循环(list comprehension)在python中;外循环不循环

我试图比较来自两个不同文件的列的数据.我试图使用for,现在是列表理解.

问题是外部for循环没有被迭代,但内部循环不是.我已单独检查,迭代就好了;但是一旦我窝了,我就会遇到这个问题.我有什么遗漏吗?

import csv

newInv  = csv.reader(open("new.csv", "r"))
origInv = csv.reader(open("old.csv", "r"))

print [ oldrow[5] + " " + newrow[3]  for oldrow in origInv for newrow in newInv ]

解决方法:

外部是迭代的.但是,内循环仅在外循环的第一次迭代中执行 – 然后到达newInv的结尾.

了解newInv不是可以多次迭代的集合.它是一个只能使用一次的迭代器.试试这个(未经测试):

newInv  = list(csv.reader(open("new.csv", "r")))
origInv = list(csv.reader(open("old.csv", "r")))

它会将数据复制到内存中,并允许您多次迭代.

上一篇:python – 连接嵌套元组


下一篇:删除所有嵌套块,同时通过python单独保留非嵌套块