l = [True, True , False]
不使用itertools
模块。
如何在一个新的list
中创建l的排列。
newlist = [[True,True,False],[True,True,True], [False,False,True],[False,False,False]....]
基本上我想做的是:
allorderings = itertools.product ([False, True], repeat = n)
l = [True, True , False]
不使用itertools
模块。
如何在一个新的list
中创建l的排列。
newlist = [[True,True,False],[True,True,True], [False,False,True],[False,False,False]....]
allorderings = itertools.product ([False, True], repeat = n)
使用itertools.permutations
import itertools
l = [True, True , False]
newlist = list(itertools.permutations(l))
编辑:根据你的问题,你需要的排列之一是(True, True, True)
,但它并不是列表l
的任何一个排列。这个答案在技术上给出了列表的排列,你可能需要额外的工作才能实现你在问题中展示的内容(除非当然那是一个笔误)。
l = set([True, True, False])
print {(i, j, k) for i in l for j in l for k in l}
请尝试这个,
>>> import itertools
>>> print list(itertools.permutations([True, True , False], 3))
输出
[(True, True, False), (True, False, True), (True, True, False), (True, False, True), (False, True, True), (False, True, True)]
或者试试这个:
>>> def combiList(l):
if not l:
return [[]]
res = []
for e in l:
temp = l[:]
temp.remove(e)
res.extend([[e] + r for r in combiList(temp)])
return res
>>> combiList([True, True , False])
[[True, True, False], [True, False, True], [True, True, False], [True, False, True], [False, True, True], [False, True, True]]
>>>