在for循环中哪个更pythonic:zip或enumerate?

考虑到可扩展性和可读性,其中哪一个被认为是更加pythonic?
使用枚举:

group = ['A','B','C']
tag = ['a','b','c']

for idx, x in enumerate(group):
    print(x, tag[idx])

或使用zip:

for x, y in zip(group, tag):
    print(x, y)

我问的原因是我一直在混合两者.我应该遵循一种标准方法,但它应该是什么?

解决方法:

毫无疑问,拉链是更加pythonic.它不要求您使用变量来存储索引(您不需要),并且使用它可以统一处理列表,而使用枚举,您迭代一个列表,并索引另一个列表,即不均匀的处理.

但是,您应该知道zip只运行到两个列表中较短的一个的警告.为了避免重复别人的回答,我在这里只提供一个参考:someone else’s answer.

@ user3100115恰当地指出在python2中,你应该更喜欢使用itertools.izip而不是zip,因为它的懒惰性质(更快,内存效率更高).在python3中zip已经像py2的izip一样.

上一篇:map(function, iterable, ...)


下一篇:迭代器