gpt4 book ai didi

python - 在 CSV 阅读器上使用 list() 函数不一致

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:44 24 4
gpt4 key购买 nike

在研究一个常见问题的选项(如何在迭代前查找 CSV 阅读器中的行数)时,我遇到了使用 len(list(myCSVReader)) 的方法。是的,我知道这是多么笨拙和潜在的昂贵,我不会使用它。但是在玩它的时候,我遇到了一个非常令人费解的不一致:

#myFile.txt is a 3-line CSV file
myCSV = csv.reader(open('myFile.txt','rb'),dialect='excel')
print(len(list(myCSV)))
print(list(myCSV))

当我运行它时,我得到:

> 3
> []

我能理解为什么您不能只使用 list() 将阅读器转换为列表列表,但如果是这样,那么 len( ) 在此产生正确的结果?

-- JDM

最佳答案

当您从 generator 构建 list 时会发生这种情况。

  • Generator 是一个可迭代的对象,可以一个接一个地产生项目。在某个时候它会筋疲力尽。

  • csv.reader 返回一个生成器。

  • 当您执行 list(generator) 时,列表构造函数会消耗生成器中的所有项目。

  • 下次您尝试从生成器中获取某些内容时(例如,再次执行 list(generator)),它已经耗尽了。

你能做的是创建一次列表并在需要的地方使用它:

myCSV = list(csv.reader(open('myFile.txt','rb'),dialect='excel'))
print(len(myCSV))
print(myCSV)

关于python - 在 CSV 阅读器上使用 list() 函数不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com