我怎样才能得到“我的”呢;旧的;Python3中的zip()?

我怎样才能得到“我的”呢;旧的;Python3中的zip()?,python,django,python-3.x,Python,Django,Python 3.x,我从Python2.7迁移到Python3.3,zip()不再像预期的那样工作。 事实上,我在文档中读到它现在返回一个迭代器而不是列表 那么,我该如何处理这件事呢?我可以在Python3代码中使用“old”zip()吗 了解bellow以前在Django项目中的工作方式: 在views.py中:my\u zipped\u list=zip(列表1,列表2) 在file.html:{{my_zipped_list.0.1}} 也许另一个解决方案是保持“新”的zip()行为,改为更改模板 谢谢你的帮

我从Python2.7迁移到Python3.3,zip()不再像预期的那样工作。 事实上,我在文档中读到它现在返回一个迭代器而不是列表

那么,我该如何处理这件事呢?我可以在Python3代码中使用“old”zip()吗

了解bellow以前在Django项目中的工作方式:

在views.py中:
my\u zipped\u list=zip(列表1,列表2)

在file.html:
{{my_zipped_list.0.1}}

也许另一个解决方案是保持“新”的zip()行为,改为更改模板


谢谢你的帮助

只需通过执行
list(zip(…)

将结果列成一个列表,并记住此解决方案,因为当迭代器妨碍您时,您经常需要它(例如,使用
dict.keys()
等)@alexis:
dict.keys()
不是迭代器,它是视图(与
dict.viewkeys()相同)
在2.x中,与dict.iterkeys()不同。对,我这么说太草率了;但是,当你想要一个列表时,你不明白为什么你不能为它编制索引,或者其他什么。通常最好编写你的代码,这样它就不在乎它是否有迭代器、列表或其他任何东西,只要它是可写的。有时这是不可能的,在这种情况下,您必须将您获得的任何iterable传递到
列表
函数(或
iter
,或
元组
,或任何适合您尝试执行的操作)。但是首先,试着看看您是否真的需要。zip()从返回列表到返回迭代器的转换可能会在以前的工作代码中导致一个无声的bug。当代码a)创建一个zip时,就会出现错误;b) 迭代返回的值;c) 再次迭代返回的值。当zip()返回一个列表时,(b)和(c)将迭代压缩后的列表。当zip()只返回一个迭代器时,(b)对结果进行迭代,但(c)不进行任何处理。我想2to3也没抓住这个。