python - 人员列表中 2 人或 3 人的团体的所有组合 [Python]

标签 python combinations

我有一个问题。 我必须创建 2 或 3 人组的所有划分,不得重复(不是相同划分的 2 次)。 例如我有 6 个成员:[a,b,c,d,e,f] 代码应该响应: ab cd ef ab ce df ab cf 德 abc 定义 ...

我已经有了进行所有组合的代码,但仅限 2 人一组,我不知道如何为 3 人和 2 人组做(例如,如果我们有 5 人,则为 ab cde)

lst =  ['a','b','c','d','e','f']

def all_pairs(lst):
if len(lst) < 2:
    yield []
    return
if len(lst) % 2 == 1:
    # Handle odd length list
    for i in range(len(lst)):
        for result in all_pairs(lst[:i] + lst[i+1:]):
            yield result
else:
    a = lst[0]
    for i in range(1,len(lst)):
        pair = [a,lst[i]]
        for rest in all_pairs(lst[1:i]+lst[i+1:]):
            yield [pair] + rest
print(list(all_pairs(lst)))

最佳答案

您可以使用 itertools 来执行此操作

import itertools

lst =  ['a','b','c','d','e','f']
for L in range(0, len(lst)+1):
    for subset in itertools.combinations(lst, L):
        if len(subset) == 2 or len(subset) == 3 :
            print(subset)

关于python - 人员列表中 2 人或 3 人的团体的所有组合 [Python],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58939696/

相关文章:

python - ctypes 结构,字节对齐

c# - 不重复的复杂排列

python - 计算连通图

algorithm - 关于循环排列

Python:两个网络之间的jaccard相似性?

python - 展平 OpenCV/Numpy 数组

Python帮助: 'str' object is not callable

python - 上传字段样式显示为 None 的文件

python - 找出数字组合中的最高总和

python - 我想用排列计算 "distance_table = []"中两个值之间的差值,在这种情况下如何正确使用排列?