Python for循环停止其他for循环

Python for循环停止其他for循环,python,csv,for-loop,Python,Csv,For Loop,出于某种原因,这段python代码中的第二个循环似乎无缘无故地想要跳过,我不知道为什么,但它读取For循环的第一行,然后跳过它,而不执行其中的任何代码 出于某种原因,删除第一个For循环可以运行第二个For循环,我不知道为什么或者如何运行 input("nothing") with open ("Rainbow Six Siege Survey.csv") as csv_file: csv_reader = csv.DictReader(cs

出于某种原因,这段python代码中的第二个循环似乎无缘无故地想要跳过,我不知道为什么,但它读取For循环的第一行,然后跳过它,而不执行其中的任何代码

出于某种原因,删除第一个For循环可以运行第二个For循环,我不知道为什么或者如何运行



input("nothing")

with open ("Rainbow Six Siege Survey.csv") as csv_file:
    csv_reader = csv.DictReader(csv_file)

    line_count = 0

    WinLoss = []
    KillDeath = []
    Names = []
    Time = []

    for i in range(0, len(list(csv_reader))):
        WinLoss.append(0)
        KillDeath.append(0)
        Names.append("")
        Time.append("")


    for row in csv_reader:
        #if line_count == 0:
            #print("The columns are: {",".join(row)}")
        #else:
            #Names[line_count-1] = row["UserName"]
        #linecount+=1
        print("One")

    print(KillDeath, WinLoss, Names, Time)```

csv_reader是一个迭代器,因此一旦对其进行迭代,就会使用元素。您可以将元素保存在列表中,并根据需要多次迭代:

input("nothing")

with open ("Rainbow Six Siege Survey.csv") as csv_file:
    csv_reader = csv.DictReader(csv_file)
    content = list(csv_reader)

    line_count = 0

    WinLoss = []
    KillDeath = []
    Names = []
    Time = []

    for i in range(0, len(content)):
        WinLoss.append(0)
        KillDeath.append(0)
        Names.append("")
        Time.append("")


    for row in content:
        #if line_count == 0:
            #print("The columns are: {",".join(row)}")
        #else:
            #Names[line_count-1] = row["UserName"]
        #linecount+=1
        print("One")

    print(KillDeath, WinLoss, Names, Time)

为什么要用两个循环而不是一个循环来完成此操作?因为一个是初始化列表,另一个是用csv读取器中的内容填充列表,但是现在您提到了,我可以只做一个循环。只是这两段代码是在两个不同的时间编写的,我并没有真正考虑过简化它,因为我认为我很可能会破坏它,因为我对自己实际做的事情知之甚少。虽然我试图通过谷歌解决这些问题,但是cvs阅读器在反复阅读一次之后会花费自己的精力吗?这似乎有点奇怪,但这就是为什么我的代码不执行的原因。我将尝试实现您的解决方案,看看它是否工作。在实现它之后,它是否工作。虽然我确实想了解列表函数的作用,因为我查阅了它以确定它的功能,但我不太确定它的作用,因为互联网给我的例子不是很清楚。下面是关于什么和是什么的解释。其主要思想是,您迭代的对象并不都在内存中,这对于1Gb csv文件来说会适得其反,但迭代中需要的单个元素会根据需要生成。对于该文件,在每次迭代时读取和解析每一行,这允许低内存使用率和快速结果,因为您不需要等待整个文件被解析。是的@Manuel,迭代器是一个实现uuu iter_uuuu和uu next_uu的类,而生成器是一个内部带有yield语句的函数。从用户的角度来看,这两个元素是相同的,您可以简单地使用它们在for元素中提供的元素。