我在Python 3中的两个不同zip
循环中的两个列表上使用了for
的两倍结果。什么是写这个的最pythonic方式?
两次使用zip()
for j in range(123) :
for x,y in zip(list1,list2) :
doSomething()
....
for x,y in zip(list1,list2) :
doSomethingElse()
将zip的结果存储为列表
z=list(zip(list1,list2))
for j in range(123) :
for x,y in z :
doSomething()
for x,y in z :
doSomethingElse()
我非常感谢在这两种情况下都能听到Python的内部结构。
答案 0 :(得分:1)
我会使用第一种方法:
for j in range(123) :
for x,y in zip(list1,list2) :
doSomething()
....
for x,y in zip(list1,list2) :
doSomethingElse()
在Python 3中,zip方法不会从现有列表中创建新的对列表。它只是创建一个迭代器,引用每次迭代的输入列表。与创建全新列表的Python 2方式相比,它非常有效。
出于这个原因,你可以多次使用zip
命令,因为我相信这使得代码更容易阅读和更简洁(没有在代码顶部实例化新的列表引用,通常你想要如果你可以避免它,就避免创建命名引用,因为它给你一个你需要记住的引用名称 - 这也是匿名函数更具吸引力的部分原因。)