python - 如何手动获取列表中元素的所有排列?
问题描述
我正在手动尝试获取列表中所有元素的排列。
这是我写的代码。
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
推荐阅读
- docker - Podman 无法拉取镜像
- database - 1:1 关系,这是个好主意吗?
- c# - 如何确定属性是否为可为空的引用类型?
- node.js - 由于打字稿依赖性,角度无法更新
- python-3.x - 从机器人框架调用 python 编码文件时出现 FileNotFoundError
- php - 服务帐户域范围的委派 - PHP 上的 Google Calendar API v3
- google-colaboratory - 如何在 google colab 上制作目录?
- c - 在 int main() 中一个一个或两个使用函数
- c# - 如何从循环中保存 datagridview 行中的单元格值并将其传递给每一行的另一个循环?
- python - python字符串替换字母的出现次数