在python中创建布尔列表的组合/置换,而不使用ITERTOOLS

在python中创建布尔列表的组合/置换,而不使用ITERTOOLS,python,permutation,Python,Permutation,不使用itertools模块 如何在新的列表中创建l的排列 l = [True, True , False] 基本上,这就是我要做的: newlist = [[True,True,False],[True,True,True], [False,False,True],[False,False,False]....] 使用itertools.permutations allorderings = itertools.product ([False, True], repeat = n) 编辑

不使用
itertools
模块

如何在新的
列表中创建l的排列

l = [True, True , False]
基本上,这就是我要做的:

newlist = [[True,True,False],[True,True,True], [False,False,True],[False,False,False]....]

使用
itertools.permutations

allorderings = itertools.product ([False, True], repeat = n)
编辑:根据您的问题,您需要的排列之一是
(True,True,True)
,它根本不是列表中的排列
l
。这个答案提供了技术意义上的列表排列,您可能需要做额外的工作来实现问题中显示的内容(当然,除非是打字错误)。

试试这个

import itertools
l = [True, True , False]
newlist = list(itertools.permutations(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)]

使用官方纯python中的
itertools.permutations
等价物?

我能想到的最简单的方法是在相同的项目列表上迭代三次,只收集唯一的项目,如下所示

>>> 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]]
>>>

[真,真,真],[假,假,真]和[假,假,假]不是[真,真,假]的排列哦,对了。这不是所谓的排列。您将不同的组合称为什么?所以您想要产品,但输入列表没有正确指定。请看一下这里的实现:
l = set([True, True, False])
print {(i, j, k) for i in l for j in l for k in l}