gpt4 book ai didi

python - 通过交换特定元素生成列表的排列

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:36 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,通过交换某些允许的元素对来生成列表的所有可能配置。

例如,如果我们有列表:

lst = [1, 2, 3, 4, 5]

我们只允许交换以下元素对:

pairs = [[0, 2], [4, 1]]

也就是说,如果列表中的第 0 个元素与第 2 个元素交换,第 4 个元素与第 1 个元素交换(可以有任意数量的允许交换对)。给定允许的交换,我希望该函数返回列表的不同配置的数量。

由于我计划为大型列表和许多允许的交换运行此功能,因此最好让该功能尽可能高效。

我找到了通过交换所有元素生成排列的示例,一次交换两个元素,但我找不到指定某些允许交换对的方法。

最佳答案

您已被常用术语“交换”引诱离开其他生产路径。切换你的攻击。相反,请注意,您需要 [a[0]、a[2]] 和 [a[1]、a[4]] 的乘积来获得所有可能的排列。您获取这些产品中的每一个(其中四个)并以正确的顺序在您的结果集中分配元素。它看起来像这样……在某种程度上,我正在使用 Python 作为伪代码。

seq = itertools.product([a[0], a[2]], [a[1], a[4]])
for soln in seq:
# each solution "soln" is a list of 4 elements to be distributed.
# Construct a permutation "b" by putting each in its proper place.
# Map the first two soln values to b[0] and b[2];
# and the last two values to b[1] and b[4]
b = [soln[0], soln[2], soln[1], a[3], soln[4]]

你能从那里拿走它吗?就是这个主意;我将留给您概括算法。

关于python - 通过交换特定元素生成列表的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566722/

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