gpt4 book ai didi

python - 在 python 列表中查找项目的排列,增加了复杂性

转载 作者:行者123 更新时间:2023-11-28 20:26:36 25 4
gpt4 key购买 nike

请耐心等待我解释这个问题;我的数学很生疏,我刚刚开始计算机编程,抱歉!

假设我有一个包含 3 个项目的列表。我想在此列表中找到项目的所有可能排列,其中每个排列包含 3 个项目。

接下来,仍然使用我的原始列表,我想找到列表项目的所有可能排列,除了我只希望排列由两个项目组成。

最后,我想再次做同样的事情,除了安排只包含一个项目。

所以我预计 3! + 3!/1! + 3!/2!,或总共 15 个编排。只是为了真正明确我想要什么,如果我的列表是 [1, 2, 3],那么代码应该产生:

1, 2, 3
1, 3, 2
2, 1, 3
2, 3, 2
3, 1, 2
3, 2, 1

1, 2
1, 3
2, 1
2, 3
3, 1
3, 2

1
2
3

我在下面编写的代码可以完成我在上面编写的代码,但仅限于长度为 3 的列表。我可以通过添加额外的“for”循环和“elif”语句来修改代码以处理更大长度的列表,但是我觉得必须有一种方法来概括这种模式。我应该怎么做才能为任意长度的列表获得上述类型的排列?

我认为我详尽的枚举方法可能会使这比它需要的更复杂......将尝试考虑其他方法并在找到解决方案时更新。

def helperFunction(itemsList):

fullPermutationsOutputList = []


def fullPermutations(itemsList, iterations):

for item1 in itemsList:
if iterations == 2:
if len([item1]) == len(set([item1])):
fullPermutationsOutputList.append((item1,))
else:
for item2 in itemsList:
if iterations == 1:
if len([item1, item2]) == len(set([item1, item2])):
fullPermutationsOutputList.append((item1, item2))
else:
for item3 in itemsList:
if iterations == 0:
if len([item1, item2, item3]) == len(set([item1, item2, item3])):
fullPermutationsOutputList.append((item1, item2, item3))

if iterations == 0:
fullPermutations(itemsList, iterations + 1)
elif iterations == 1:
fullPermutations(itemsList, iterations + 1)

fullPermutations(itemsList, 0)
return fullPermutationsOutputList

最佳答案

只是itertools.permutations .如果你想要精确的算法,你可以检查它的来源。

关于python - 在 python 列表中查找项目的排列,增加了复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com