【发布时间】:2013-07-19 00:25:25
【问题描述】:
找到 2 个列表中的值可以重复而另一个列表中的值不能重复的所有组合的最佳方法是什么?现在,我可以得到重复列表的所有组合,如下所示:
import itertools
rep = ['A','B','C', 'D']
norep = ['1','2','3','4']
for i in itertools.combinations_with_replacement(rep,4):
print i
我可以得到不重复列表的所有组合:
for i in itertool.combinations(norep,4):
print i
我可以得到两个列表的组合,就好像它们都是非重复的:
for i in itertools.product([0, 1], repeat=4):
print [(norep[j] if i else rep[j]) for j, i in enumerate(i)]
但是,我不知道如何获得重复列表和非重复列表的组合。我还想添加包括空值在内的组合,例如['A','1',Null]。
【问题讨论】:
-
每个组合是否应该从第一个列表中抽取一个固定数量的
n值,从第二个列表中抽取一个固定数量的m,分别有重复和不重复?或者你想从一个组合池中绘制一个n值,允许重复一个列表中的元素,但不允许另一个列表中的元素? -
注意:您的“两个列表的组合好像它们都是非重复的”代码不起作用。它永远不会从两个列表中绘制前 2 个元素。
-
@user2357112 感谢您的检查。我没有注意到我的两个列表的组合并没有产生所有的组合。在你的第一篇文章中,我想要后一种行为。我想指定组合中的值的数量,例如n=4 给出 [A,B,1,2] 等或 n=5 给出 [A,C,1,3,null] 等。
-
是否允许多个
Nones? (您更喜欢包含Nones 的元组,还是更短的元组?) -
@user2357112 我想允许多个“无”并希望它们在元组中。我曾考虑将它们添加到“rep”和“norep”中,但不确定这是否会产生所需的行为。
标签: python python-2.7 combinations product itertools