打印[1,2,3,4,5]这个列表中所有可能的组合(包括空组合)
1 个赞
def calcuDif(list_a):
#list_a = [1,2,3,4,5]
list_b = [[]]
for i in range(len(list_a)):
for j in range(len(list_b)):
list_b.append(list_b[j]+[list_a[i]])
return list_b
list_a = [1,2,3,4,5]
newset = calcuDif(list_a)
print(newset,len(newset))
可以使用mark自带的代码格式
def calcuDif(list_a):
#list_a = [1,2,3,4,5]
list_b = [[]]
for i in range(len(list_a)):
for j in range(len(list_b)):
list_b.append(list_b[j]+[list_a[i]])
return list_b
list_a = [1,2,3,4,5]
newset = calcuDif(list_a)
print(len(newset))
感觉python语言肯定有人造好了轮子(做了类似的功能),搜了一下果然,自带的库intertools中就有一个combinations方法可以简单处理这类问题
from itertools import combinations
def get_combinations(input_list):
result = []
for i in range(len(input_list) + 1):
result.extend(list(combinations(input_list, i)))
return result
a = [1, 2, 3, 4, 5]
print(get_combinations(a))
1 个赞