[英]How can I iterate through this zipped table backwards?
我有这样的表:
table =
[[set(), {A}, set(), {B}],
[{c}, set(), set(), {D}]]
我想遍历列,以便按顺序查看 B、D、set()、set()、A、set()、set()、C
我使用 zip(*table) 翻转了我的桌子,现在这个:
table = zip(*table)
for word_index, row in enumerate(table):
for index in range(len(row)):
print(row[index])
允许我像 set(), C, A, set(), set(), set(), B, D 这样的迭代非常接近。 但我也想逆转。
zip(*table) 不允许我调用 reversed(zip(*table))
如何迭代我想要的方式? 如果可以避免的话,我真的不想导入 Pandas 或 numpy 。
您可以将 map reversed
转到行,然后再将它们传递给 zip:
table = [[set(), {"A"}, set(), {"B"}], [{"c"}, set(), set(), {"D"}]]
成对:
for s1,s2 in zip(*map(reversed,table)):
print(s1,s2)
{'B'} {'D'}
set() set()
{'A'} set()
set() {'c'}
扁平化:
flat = (s for ss in zip(*map(reversed,table)) for s in ss)
print(*flat)
{'B'} {'D'} set() set() {'A'} set() set() {'c'}
请注意,zip、map 和 reversed 都是迭代器,因此您实际上是按所需顺序进行迭代(而不是为行创建反向列表或临时反转矩阵)
与其他类似,只是用不同的符号[::-1]
来反转。
for i in zip(*[i[::-1] for i in table]):
print(i)
那这个呢:
table = [[set(), {'A'}, set(), {'B'}], [{'C'}, set(), set(), {'D'}]]
liste=[]
for obj1,obj2 in zip(*table[::-1]):
liste.append(obj1)
liste.append(obj2)
print(liste[::-1])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.