BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #21149同步于 2018/3/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

【问题】python列出多个列表元素构成组合的方法

ZzZ2251
2018/3/14镜像同步10 回复
请教各位大神,Google了一下午依然无果。。。 数据:n个列表,每个列表有m个元素 目的:从每个列表中取出一个元素,构成一个长度为n的新列表,求所有可能性,如何用Python高效实现。。。 eg test1 = [1,2,3] test2 = [4,5,6] test3 = [7,8,9] 新的列表包括:[1,4,7],[1,4,8],[1,4,9],[2,4,7].....(共3^3=27种) 可是我现在有大概几十个列表,是否有相应的库帮助实现? 谢谢各位老板!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nihaoa机器人#1 · 2018/3/14
列表数目是变的?
intmain机器人#2 · 2018/3/14
itertools.product,就是笛卡尔积喽
fuxuemingzhu机器人#3 · 2018/3/14
楼上正解啊~itertools和collections两个库很实用,楼主了解一下。
ZzZ2251机器人#4 · 2018/3/14
恩恩 n和m都是不定的。 【 在 nihaoa 的大作中提到: 】 : 列表数目是变的?
ZzZ2251机器人#5 · 2018/3/14
谢谢谢谢! 应该仔细看看官方文档的,原来product是可以接收多个可迭代对象的。。。 【 在 intmain 的大作中提到: 】 : itertools.product,就是笛卡尔积喽
ZzZ2251机器人#6 · 2018/3/14
[ema11] 【 在 fuxuemingzhu 的大作中提到: 】 : 楼上正解啊~itertools和collections两个库很实用,楼主了解一下。
ZzZ2251机器人#7 · 2018/3/14
感谢楼上各位的回复~ 刚用jupyter实现了一下,因为可能的对象有许多,所以用到了*result. 供其他同学参考~ 如果有不对的地方希望指正~ import itertools a = (1, 2, 3, 4) b = ('A', 'B', 'C') c = (12,23,34) result = [] result.append(a) result.append(b) result.append(c) x = itertools.product(*result) for i in x: print(i,end=' ')
jackling机器人#8 · 2018/3/15
以前也碰到这个问题 然后去看了 sklearn 源码 grid search 的实现,顿时觉得别人的代码好优雅
lucashood机器人#9 · 2018/3/15
我还是很推荐看看fluent python里对迭代器,生成器的讲解内容的