python - Python:寻找组合
问题描述
我有一个列表,为了更容易理解它的结构,我会这样写出来:
mylist = [[["a","b","c","d"]...]...]
...
重复上一个列表的意思(尽管里面的值可能会改变)
一个示例列表是:
mylist = [[["a","b","c","d"], ["e","f","g","h"]], [["i", "j", "k", "l"]], [["m","n","o","p"], ["q","r","s","t"]]]
我目前的方法是:
mylist2 = []
for a in mylist[0]:
for b in mylist[1]:
for c in mylist[2]:
mylist2.append([a,b,c])
然而,这很长,特别是因为在我的实际代码中它持续到for x in mylist[35]
我有更好的方法来编写这段代码吗?
解决方案
你的代码
%%timeit
mylist2 = []
for a in mylist[0]:
for b in mylist[1]:
for c in mylist[2]:
mylist2.append([a,b,c])
# 809 ns ± 18.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
利用itertools
import itertools
%%timeit
list(itertools.product(*mylist))
# 528 ns ± 11.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
推荐阅读
- java - 如何使用 ADB 或命令提示符通过 wifi 连接设备
- swift - 如何在 Swift 中的方形 UIBezier 中绘制角曲线?
- django - AbstractUser 的 UserAdmin 中的额外字段
- go - 为什么从代码中调用 Setenv 不起作用?
- unit-testing - 什么是开发人员的 API 级别测试?
- java - 如何将托管在 ASP.net MVC 网站上的 SignalR 服务器连接到 JAVA Swings 软件客户端
- python - IntEnum 在 _missing_ 中返回缺失的整数会引发 TypeError
- spring - Spring 请求映射正则表达式“不包含”不起作用
- python - 为什么 toTitle 在 Go 中不将小写单词大写?
- c# - “System.ArgumentException:'不存在从对象类型 Newtonsoft.Json.Linq.JValue 到已知托管提供程序本机类型的映射。'