python-2.7 - Python 2.7 动态长度列表理解
问题描述
如果这个问题已经得到回答,我提前道歉。我已尽我所能在我有限的术语知识的情况下寻找解决方案。
这是有问题的代码行:
Matrix = list([s0, s1, s2] for s0 in splits[0] for s1 in splits[1] for s2 in splits[2])
基本上,我正在构建一个列表(矩阵),其中包含列表列表“拆分”中的所有排列。但是,Splits 的大小并不总是相同。例如,有时有 4 列,该行如下所示:
Matrix = list([s0, s1, s2, **s3**] for s0 in splits[0] for s1 in splits[1] for s2 in splits[2] **for s3 in splits[3]**)
如何使这条线适应拆分的长度?IE
Matrix = list([s0,s1... , sN] for s0 in splits[0] for s1 in splits[1] ... for sN in splits[N])
谢谢
解决方案
解压splits
到参数中itertools.product
:
from itertools import product
splits = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Note: a list of tuples, because product yields tuples
explicit = list((s0, s1, s2) for s0 in splits[0] for s1 in splits[1] for s2 in splits[2])
unpacking = list(product(*splits))
assert explicit == unpacking
推荐阅读
- javascript - 为什么 AJAX 调用不仅在 iOS 上有效,在其他任何地方都有效?
- php - 在 Linux 上运行 PHP (Laravel) 的 Azure Web 应用无法连接到 SQL Server
- javascript - datatables 不打印 ajax 数据
- sql - 如何使用 Access 中的 SQL 查询从具有多个日期值的表中获取唯一的年份值(使用分组依据)
- python - 完全相同的数据框在不同笔记本电脑上的 python 中显示不同的行
- python - Matplotlib Plot 带有更精细的刻度但没有标签
- javascript - 过滤包含表的表的行
- xml - 如何输出状态数据?
- java - 在 Android/data/package-name 上保存数据有什么限制?
- php - 启用 Memcached 后,codeigniter 中出现与会话相关的未知错误