【发布时间】:2012-04-22 05:59:01
【问题描述】:
假设我有两个或多个相同长度的列表。迭代它们的好方法是什么?
a、b 是列表。
for i, ele in enumerate(a):
print ele, b[i]
或
for i in range(len(a)):
print a[i], b[i]
或者我缺少任何变体?
使用其中一个有什么特别的优势吗?
【问题讨论】:
标签: python
假设我有两个或多个相同长度的列表。迭代它们的好方法是什么?
a、b 是列表。
for i, ele in enumerate(a):
print ele, b[i]
或
for i in range(len(a)):
print a[i], b[i]
或者我缺少任何变体?
使用其中一个有什么特别的优势吗?
【问题讨论】:
标签: python
通常的方式是使用zip():
for x, y in zip(a, b):
# x is from a, y is from b
当两个迭代器 a 和 b 中较短的一个被用完时,这将停止。另外值得注意的是:itertools.izip()(仅限 Python 2)和itertools.izip_longest()(itertools.zip_longest() 在 Python 3 中)。
【讨论】:
zip 是 izip。另外,没有zip_longest 但map(None, a, b) 可以。
izip_longest() 在 Python 3 上被称为 zip_longest()...
iterloos.zip_longest()。
你可以使用zip:
>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> for x, y in zip(a, b):
... print x, y
...
1 a
2 b
3 c
【讨论】: