我无法澄清在Python(3)中使用
我有一个数据:
为什么在执行
next()
的含义。我有一个数据:
chr pos ms01e_PI ms01e_PG_al ms02g_PI ms02g_PG_al ms03g_PI ms03g_PG_al ms04h_PI ms04h_PG_al
2 15881989 4 C|C 6 A|C 7 C|C 7 C|C
2 15882091 4 A|T 6 A|T 7 T|A 7 A|A
2 15882148 4 T|T 6 T|T 7 T|T 7 T|G
我读到的是:
运行良好
c = csv.DictReader(io.StringIO(data), dialect=csv.excel_tab)
print(c)
print(list(c))
运行正常
c = csv.DictReader(io.StringIO(data), dialect=csv.excel_tab)
print(c)
keys = next(c)
print('keys:', keys)
但是,现在出现了一个问题。
c = csv.DictReader(io.StringIO(data), dialect=csv.excel_tab)
print(c)
print(list(c))
keys = next(c)
print('keys:', keys)
错误信息:
Traceback (most recent call last):
2 15882601 4 C|C 9 C|C 6 C|C 5 T|C
File "/home/everestial007/Test03.py", line 24, in <module>
keys = next(c)
File "/home/everestial007/anaconda3/lib/python3.5/csv.py", line 110, in __next__
row = next(self.reader)
StopIteration
为什么在执行
print(list(c))
后再执行print(keys)
会导致StopIteration
错误?我已经阅读了文档,但对这个特定的例子不是很清楚。
list(c)
时,您会消耗迭代器。迭代器现在为空,没有下一个项目。您可能想要了解一般的生成器知识。 - Patrick Haugh