标签:组合 加入 python 个数 sum list1 pop list2 .........
def free_combination(list1, m):
# 递归函数
global sum, list2 # 全局变量
if m == 1: # 递归出口
for i, element in enumerate(list1):
# enumerate()函数:返回下标(索引)和值
if i in list2:
# 因为已经加入组合的数字不能重复加入,所以跳出循环
continue
list2.append(i) # 未使用的数字可以加入组合
if n == len(list2): # 如果组合的长度符合要求,则符合规则的组合数量+1
sum += 1
for j in list2: # 打印
print(list1[j], end='\t')
list2.pop() # 删除最后一个元素。 (pop()返回删除的值,我们这里用不到)
print() # 换行
return 0
else:
for i, element in enumerate(list1):
if i in list2:
# 因为已经加入组合的数字不能重复加入,所以跳出循环
continue
list2.append(i) # 未使用的数字可以加入组合
free_combination(list1, m - 1) # 递归调用
list2.pop() # 删除最后一个元素。 (pop()返回删除的值,我们这里用不到)
list1 = eval(input('请输入自由组合的序列(形如[1, 2, 3,...]):'))
n = int(input('请输入自由组合的长度:'))
m = n
sum = 0
list2 = list() # 建立一个空列表,存储已经加入组合的下标值
free_combination(list1, m)
print(f'{list1}{n}个数的排列共有{sum}种排列组合')
标签:组合,加入,python,个数,sum,list1,pop,list2,......... 来源: https://www.cnblogs.com/JiankangLiu/p/10504726.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。