繁体   English   中英

如何向后遍历这个压缩表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM