可迭代列表清单的迭代器

时间:2019-02-11 14:47:01

标签: python python-3.x iterator iterable

我想迭代Python3中的Iterables列表。

换句话说,我有一个可迭代的矩阵,我想遍历并在每次迭代中获得一个值矩阵。更具体地说,我有几个文件(行),它们有多个版本(列),我希望在每次迭代时,得到一个包含所有文件第一行的元组/矩阵,等等。

所以,给出这样的信息

pushd

我想

a = [
  [iter(range(1,10)), iter(range(11,20)), iter(range(21,30))],
  [iter(range(101,110)), iter(range(111,120)), iter(range(121,130))]
]

并获得

for sources_with_their_factors in MAGIC_HERE(a):
  print(sources_with_their_factors)

我尝试了

((1,11,21), (101,111,121))
((2,12,22), (102,112,122))
…

但这并不是在重复我的范围。

2 个答案:

答案 0 :(得分:2)

很显然,您可以将每个子列表中的迭代器一起zip,只是缺少了如何zip一起将生成的迭代器一起使用。我将解压缩生成器表达式:

for t in zip(*(zip(*l) for l in a)):
    print(t)

((1, 11, 21), (101, 111, 121))
((2, 12, 22), (102, 112, 122))
...

答案 1 :(得分:0)

为什么不只使用索引?

for i in range(len(a[0][0])):
    tupA = (a[0][0][i], a[0][1][i], a[0][2][i])
    tupB = (a[1][0][i], a[1][1][i], a[1][2][i])
    print((tupA, tupB))

编辑:这是一种简单的方法-我(一个simpleton)可以做到的方式。 zip 将更加优雅和有效。