繁体   English   中英

如何手动获取列表中元素的所有排列?

[英]How to get all permutations of elements in a list manually?

我正在手动尝试获取列表中所有元素的排列。

这是我编写的代码。

lst = [1,2,3,4]

def list_forward(lst_lst):
    lst2 =[]
    for lst in lst_lst: 
        for i in range(len(lst)):
            for j in range(len(lst)):
                lst[j],lst[i]=lst[i],lst[j]
                lst2.append(lst[:])
    return lst2

def perm(lst):
    lst2 =[]
    lst2.append(lst[:])
    for i in range(len(lst)):
        lst[0],lst[i]=lst[i],lst[0]
        lst2.append(lst[:])
    return list_forward(lst2)

l3 = perm(lst)
lset = set([tuple(t) for t in l3])
l4 = [list(t) for t in lset]
print(len(l4))

返回23,而我应该得到24个唯一列表。 我究竟做错了什么? 我要寻找的是为什么缺少其中一个列表的指南。

您可以从itertools.permutations()中查看执行相同操作的代码。

https://docs.python.org/3/library/itertools.html#itertools.permutations

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM