迭代器和生成器之间有什么区别?关于何时使用每种情况的一些示例会很有帮助.
老实说,我在这里有点困惑,为什么我不能在相同的数据上迭代两次?
def _view(self,dbName):
db = self.dictDatabases[dbName]
data = db[3]
for row in data:
print("doing this one time")
for row in data:
print("doing this two times")
Run Code Online (Sandbox Code Playgroud)
这将打印出"一次这样做"几次(因为数据有几行),但它根本不会打印出"这样做两次"......
我第一次迭代数据工作正常,但第二次当我运行最后一个列表"for data in data"时,这没有返回...所以执行它一次工作但不是两次......?
仅供参考 - 数据是一个csv.reader对象(如果是这样的原因)......
Python 3.2.3,使用Idle,Python shell
t = (1,2,3)
t2 = (5,6,7)
z = zip(t,t2)
for x in z :
print(x)
Run Code Online (Sandbox Code Playgroud)
结果:(1,5)(2,6)(3,7)
完全使用相同的循环代码再次在for循环中显示z(在上一部分和下一部分之间不做任何事情):
for x in z :
print(x)
Run Code Online (Sandbox Code Playgroud)
结果:(空白,无结果)
z仍然存在,如
z
Run Code Online (Sandbox Code Playgroud)
结果是
<zip object at 0xa8d48ec>
Run Code Online (Sandbox Code Playgroud)
我甚至可以重新分配t,t2再次拉链,但是它只能再次使用一次而且只能工作一次.
它应该如何工作?在http://docs.python.org/3.2/library/functions.html#zip的文档中没有提到这一点.