嵌套嵌套循环提早退出

时间:2019-10-28 15:37:19

标签: python-3.x

我正在尝试比较两个csv文件,如果它们匹配则写入第三个(比较/写入效果很好)。我的问题是迭代。在下面的示例中,我的程序将打印1倍于s中的行。如果我将打印水平上移并删除s的for循环,它将打印与z中一样多的行。我本质上是希望它将z中的每一行与s中的每一行进行比较,但它仅对z中的第一行执行并退出

import csv
if __name__ == "__main__":

    with open("z_file.csv", "r") as f:
        with open("s_file.csv", "r") as g:
            with open("results.csv", "a+", newline="") as h:
                z = csv.reader(f)
                s = csv.reader(g)
                final = csv.writer(h)
                i = 0
                for zrow in z:
                    i += 1
                    for srow in s:
                        print(i)

1 个答案:

答案 0 :(得分:1)

第一次单击内循环时,将从文件中读取所有行行。在外循环的第二次迭代中,读数不会重新开始,而是从中断处开始-结束。 z不是行数组,它是一个惰性生成器。

最简单的解决方案是简单地将文件打开到外部循环中。这样它就可以在每次迭代中重新打开。

更快,实际上是将其读入列表并遍历列表。