鱼C论坛

 找回密码
 立即注册
查看: 336|回复: 1

关于Python列表的问题

[复制链接]
发表于 2024-5-12 14:08:54 | 显示全部楼层 |阅读模式

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

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

x
语言:python

知识点:排列组合

例:
t=[ ["1_1","1_2","1_3"] , [“2_1”“2_2”],["3_1"]... ]
n=2(不能大于len(t))

t的数据结构是2维的,每个列表的长度是不一的,如果N=2的话,输出结果为:

(1_1,2_1) (1_1,3_1) (1_1,2_2) (1_2,2_1) (1_2,2_2) (1_2,3_1) (1_3,2_1) (1_3,2_2) (1_3,3_1) (2_1,3_1) (2_2,3_1)

以上11种组合

如果n=3

(1_1,2_1,3_1)....类推
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-12 14:09:23 | 显示全部楼层
你可以使用itertools模块中的permutations函数来实现排列组合。下面是一个示例代码:
import itertools

def get_combinations(t, n):
    # 获取t中前n个元素的所有组合
    combinations = list(itertools.combinations(t[:n], n))
    
    # 如果t中元素不足n个,直接返回空列表
    if len(combinations) == 0:
        return []
    
    # 对每个组合进行排列,并将排列结果保存在result列表中
    result = []
    for combination in combinations:
        perm = list(itertools.permutations(combination))
        result.extend(perm)
    
    return result

t = [[1, 2], [1, 3], [2, 1, 2, 3]]
n = 2

combinations = get_combinations(t, n)

for combination in combinations:
    print(combination)

解释一下上面的代码:

1. 首先,我们导入itertools模块,它包含了各种有用的迭代工具函数。
2. 然后,我们定义了一个名为`get_combinations`的函数,它接受一个二维列表`t`和一个整数`n`作为参数。
3. 在函数内部,我们首先使用`combinations`函数获取`t`中前n个元素的所有组合,并将结果保存在列表`combinations`中。
4. 如果t中的元素不足n个,说明无法生成n个元素的组合,直接返回空列表。
5. 接下来,我们对每个组合进行排列,将排列结果保存在列表`result`中。
6. 最后,返回`result`列表作为结果。
7. 在主程序中,我们定义了一个二维列表`t`和整数`n`,并调用`get_combinations`函数获取所有组合。
8. 最后,使用一个循环遍历所有组合,并打印出来。

希望这能帮到你!

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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