我有一个问题。 我必须创建 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/