python - 人员列表中 2 人或 3 人的所有组合 [Python]
问题描述
我有一个问题。我必须创建没有重复的 2 或 3 人组的所有划分(不是同一划分的 2 次)。例如我有 6 个成员:[a,b,c,d,e,f] 代码应该响应:ab cd ef ab ce df ab cf de abc def ...
我已经有了进行所有组合的代码,但仅适用于 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)
推荐阅读
- flutter - RenderBox 未布置,断言失败:第 1940 行 pos 12: 'hasSize' GridView
- python - 带 asyncio 的异步套接字服务器
- python - 从python中的字符串中删除撇号
- python - 如何改进 Django N+1 数据导出问题?
- security - 具有测量引导的 TPM 芯片的安全性
- android - Android Studio - Kotlin 协程的未解决参考错误,但代码编译
- reactjs - 在 React Admin 中使用 useMutation 钩子替换列表数组数据
- pandas - 如何计算熊猫的买卖数量?
- python - Visual Studio Code 中的 Python 版本问题
- ruby-on-rails - 添加超过 512 个配置时,Monit 停止响应