python - 如何向后遍历这个压缩表?
问题描述
我有这样的表:
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。
解决方案
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 都是迭代器,因此您实际上是在按所需顺序进行迭代(而不是为行创建反向列表或临时反转矩阵)
推荐阅读
- laravel-6.2 - 一般错误:1005 无法创建表`learning`.`users`
- javascript - 在 react-native 中运行之前,如何让应用程序等待从从 firestore 获取数据的模块中获取所有数据?
- amazon-web-services - API Gateway Websockets - 接收数据后关闭客户端连接
- java - WebDriver 和 ChromeDriver 无法解析为类型
- vue.js - Vue2Leaflet 中的 noWrap?
- python - Scrapy 不会下载所有页面的所有图像
- sql - 在 SQL 数据库中使用以太坊地址作为主键
- java - 修改 calculateFittingCost() 方法,使其将可变劳动力成本乘以适当的成本乘数
- c# - 如何使用 .NET Core 压缩图像大小?
- html - 列未并排基础css