鱼C论坛

 找回密码
 立即注册
查看: 251|回复: 2

[已解决]排列组合问题

[复制链接]
发表于 2024-6-11 20:27:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有一个列表,里面有很多不同的东西,把这些东西重新排列组合,如何列出所有情况,反回一个复合列表
最佳答案
2024-6-11 20:27:36
想要列出一个列表的所有排列组合,可以使用递归的方法。下面是一个示例代码:
def permutations(lst):
    # 列表只有一个元素时,直接返回该元素
    if len(lst) == 1:
        return [lst]
    
    # 递归调用,取出每个元素,与剩余元素进行排列组合
    result = []
    for i in range(len(lst)):
        rest = lst[:i] + lst[i+1:]
        for p in permutations(rest):
            result.append([lst[i]] + p)
            
    return result

# 测试代码
my_list = [1, 2, 3]
result = permutations(my_list)
print(result)

输出结果如下:
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

在这个示例中,函数`permutations`接收一个列表作为参数,并返回一个包含所有排列组合情况的列表。首先,判断列表长度是否为1,如果是,则直接返回该列表。如果不是,则遍历列表中的每个元素,将其与剩余元素进行排列组合。使用递归的方式,将每个排列组合加入到结果列表中。

希望这个示例能够帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-11 20:27:36 | 显示全部楼层    本楼为最佳答案   
想要列出一个列表的所有排列组合,可以使用递归的方法。下面是一个示例代码:
def permutations(lst):
    # 列表只有一个元素时,直接返回该元素
    if len(lst) == 1:
        return [lst]
    
    # 递归调用,取出每个元素,与剩余元素进行排列组合
    result = []
    for i in range(len(lst)):
        rest = lst[:i] + lst[i+1:]
        for p in permutations(rest):
            result.append([lst[i]] + p)
            
    return result

# 测试代码
my_list = [1, 2, 3]
result = permutations(my_list)
print(result)

输出结果如下:
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

在这个示例中,函数`permutations`接收一个列表作为参数,并返回一个包含所有排列组合情况的列表。首先,判断列表长度是否为1,如果是,则直接返回该列表。如果不是,则遍历列表中的每个元素,将其与剩余元素进行排列组合。使用递归的方式,将每个排列组合加入到结果列表中。

希望这个示例能够帮到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-11 20:55:54 | 显示全部楼层
from collections import permutations
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 04:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表