python实现排列组合
最近遇到一个问题,想要实现一个组合。需求:ele = [‘糖尿病’,‘转移高血压’,‘转移淋巴结增大’,‘组织学类型’,‘CA125’,‘NLR’,‘APTT’]
这样一个列表,想要实现任意四个的组合,要所有情况的。
1.下面我们直接上代码:先写一个组合的函数实现组合功能
def combinations(elements, r):
if r == 0:
return [[]]
if len(elements) == 0:
return []
result = []
first = elements[0]
rest = elements[1:]
for c in combinations(rest, r-1):
result.append([first] + c)
result.extend(combinations(rest, r))
return result
2.下面是我们的需求列表
ele = [‘糖尿病’,‘转移高血压’,‘转移淋巴结增大’,‘组织学类型’,‘CA125’,‘NLR’,‘APTT’]
3.接着调用我们的函数
print("组合:")
for r in range(4, len(ele)+1):
combs = combinations(ele, r)
for comb in combs:
if len(set(comb)) == 4:
print(comb)
注:可以调整自己想要的组合长度
4结果:
[‘糖尿病’, ‘转移高血压’, ‘转移淋巴结增大’, ‘组织学类型’]
[‘糖尿病’, ‘转移高血压’, ‘转移淋巴结增大’, ‘CA125’]
[‘糖尿病’, ‘转移高血压’, ‘转移淋巴结增大’, ‘NLR’]
[‘糖尿病’, ‘转移高血压’, ‘转移淋巴结增大’, ‘APTT’]
[‘糖尿病’, ‘转移高血压’, ‘组织学类型’, ‘CA125’]
[‘糖尿病’, ‘转移高血压’, ‘组织学类型’, ‘NLR’]
[‘糖尿病’, ‘转移高血压’, ‘组织学类型’, ‘APTT’]
[‘糖尿病’, ‘转移高血压’, ‘CA125’, ‘NLR’]
[‘糖尿病’, ‘转移高血压’, ‘CA125’, ‘APTT’]
[‘糖尿病’, ‘转移高血压’, ‘NLR’, ‘APTT’]
[‘糖尿病’, ‘转移淋巴结增大’, ‘组织学类型’, ‘CA125’]
[‘糖尿病’, ‘转移淋巴结增大’, ‘组织学类型’, ‘NLR’]
[‘糖尿病’, ‘转移淋巴结增大’, ‘组织学类型’, ‘APTT’]
[‘糖尿病’, ‘转移淋巴结增大’, ‘CA125’, ‘NLR’]
[‘糖尿病’, ‘转移淋巴结增大’, ‘CA125’, ‘APTT’]
[‘糖尿病’, ‘转移淋巴结增大’, ‘NLR’, ‘APTT’]
[‘糖尿病’, ‘组织学类型’, ‘CA125’, ‘NLR’]
[‘糖尿病’, ‘组织学类型’, ‘CA125’, ‘APTT’]
[‘糖尿病’, ‘组织学类型’, ‘NLR’, ‘APTT’]
[‘糖尿病’, ‘CA125’, ‘NLR’, ‘APTT’]
[‘转移高血压’, ‘转移淋巴结增大’, ‘组织学类型’, ‘CA125’]
[‘转移高血压’, ‘转移淋巴结增大’, ‘组织学类型’, ‘NLR’]
[‘转移高血压’, ‘转移淋巴结增大’, ‘组织学类型’, ‘APTT’]
[‘转移高血压’, ‘转移淋巴结增大’, ‘CA125’, ‘NLR’]
[‘转移高血压’, ‘转移淋巴结增大’, ‘CA125’, ‘APTT’]
[‘转移高血压’, ‘转移淋巴结增大’, ‘NLR’, ‘APTT’]
[‘转移高血压’, ‘组织学类型’, ‘CA125’, ‘NLR’]
[‘转移高血压’, ‘组织学类型’, ‘CA125’, ‘APTT’]
[‘转移高血压’, ‘组织学类型’, ‘NLR’, ‘APTT’]
[‘转移高血压’, ‘CA125’, ‘NLR’, ‘APTT’]
[‘转移淋巴结增大’, ‘组织学类型’, ‘CA125’, ‘NLR’]
[‘转移淋巴结增大’, ‘组织学类型’, ‘CA125’, ‘APTT’]
[‘转移淋巴结增大’, ‘组织学类型’, ‘NLR’, ‘APTT’]
[‘转移淋巴结增大’, ‘CA125’, ‘NLR’, ‘APTT’]
[‘组织学类型’, ‘CA125’, ‘NLR’, ‘APTT’]