我试图用我认为微不足道的东西来学习python 3,但实际上让我有点生气。
我有两个列表。
items=['a','b','c']
states=[0, 1, -1]
并且我想生成 state 的所有唯一组合,这些项可以具有...,因此在本示例中,它将以...开始。
1, 1, 1
1, 1, 0
1, 1,-1
..
注意 :顺序很重要,并且1、0、0与0、1、0不同
然后,如果我们添加另一个项目,它将最终成为..
1, 1, 1, 1
1, 1, 1, 0
1, 1, 1,-1
..
此刻,我对语法有些沮丧,并且不确定100%是否有可能,但是一直在尝试使用itertools.permutations和'generator'的概念来解决这个问题? / p>
所以,我开始尝试获取状态的排列。
itertools.permutations(states)
[(0, 1, -1), (0, -1, 1), (1, 0, -1), (1, -1, 0), (-1, 0, 1), (-1, 1, 0)]
,然后将它们与项目列表一起加入。
[(x,items) for x in itertools.permutations(states)]
[((0, 1, -1), ['a', 'b', 'c']), ((0, -1, 1), ['a', 'b', 'c']), ((1, 0, -1), ['a', 'b', 'c']), ((1, -1, 0), ['a', 'b', 'c']), ((-1, 0, 1), ['a', 'b', 'c']), ((-1, 1, 0), ['a', 'b', 'c'])]
但是所有这一切都是将我当前在列表中的状态列表随机化。也就是说,我没有1,1,1或0,0,0
任何人都可以向我提供一些建议。.我敢肯定这必须已经完成!
答案 0 :(得分:1)
您可能正在寻找itertools.product
:
from itertools import product
[list(zip(x, item)) for x in product(states, repeat=3)]
[[(0, 'a'), (0, 'b'), (0, 'c')],
[(0, 'a'), (0, 'b'), (1, 'c')],
[(0, 'a'), (0, 'b'), (-1, 'c')],
[(0, 'a'), (1, 'b'), (0, 'c')],
[(0, 'a'), (1, 'b'), (1, 'c')],
[(0, 'a'), (1, 'b'), (-1, 'c')],
[(0, 'a'), (-1, 'b'), (0, 'c')],
[(0, 'a'), (-1, 'b'), (1, 'c')],
[(0, 'a'), (-1, 'b'), (-1, 'c')],
[(1, 'a'), (0, 'b'), (0, 'c')],
[(1, 'a'), (0, 'b'), (1, 'c')],
[(1, 'a'), (0, 'b'), (-1, 'c')],
[(1, 'a'), (1, 'b'), (0, 'c')],
[(1, 'a'), (1, 'b'), (1, 'c')],
[(1, 'a'), (1, 'b'), (-1, 'c')],
[(1, 'a'), (-1, 'b'), (0, 'c')],
[(1, 'a'), (-1, 'b'), (1, 'c')],
[(1, 'a'), (-1, 'b'), (-1, 'c')],
[(-1, 'a'), (0, 'b'), (0, 'c')],
[(-1, 'a'), (0, 'b'), (1, 'c')],
[(-1, 'a'), (0, 'b'), (-1, 'c')],
[(-1, 'a'), (1, 'b'), (0, 'c')],
[(-1, 'a'), (1, 'b'), (1, 'c')],
[(-1, 'a'), (1, 'b'), (-1, 'c')],
[(-1, 'a'), (-1, 'b'), (0, 'c')],
[(-1, 'a'), (-1, 'b'), (1, 'c')],
[(-1, 'a'), (-1, 'b'), (-1, 'c')]]
或者,还有combinations_with_replacement()
:
from itertools import combinations_with_replacement
[list(zip(x, item)) for x in combinations_with_replacement(states, 3)]
[[(0, 'a'), (0, 'b'), (0, 'c')],
[(0, 'a'), (0, 'b'), (1, 'c')],
[(0, 'a'), (0, 'b'), (-1, 'c')],
[(0, 'a'), (1, 'b'), (1, 'c')],
[(0, 'a'), (1, 'b'), (-1, 'c')],
[(0, 'a'), (-1, 'b'), (-1, 'c')],
[(1, 'a'), (1, 'b'), (1, 'c')],
[(1, 'a'), (1, 'b'), (-1, 'c')],
[(1, 'a'), (-1, 'b'), (-1, 'c')],
[(-1, 'a'), (-1, 'b'), (-1, 'c')]]