如何解决使用组合替换后,如何删除不想要的组合的元组
[1,1,2]
[1,2,3]
[1,3,4]
使用 itertools.combinations_with_replacement 我已经接近了,但我最终得到了跳跃值的列表,例如:
[1,3]
or
[2,3]
我不想要这个。我总是想从1开始,一直增加直到列表填满,然后再增加到下一个值。
如果我使用 itertools,那么有没有办法删除我不想要的列表?
解决方法
感觉验证 combinations
的结果比简单地创建您需要的列表需要更大的努力。
这可以通过递归函数来完成,该函数在每一步添加要添加到列表中的值,直到定义的大小:
def gen_list(pre,size):
if size == 1:
return [pre]
res = gen_list(pre + [pre[-1]],size - 1)
res.extend(gen_list(pre + [pre[-1]+1],size-1))
return res
for l in gen_list([1],4):
print(l)
打印:
[1,1,1]
[1,2]
[1,2,3]
[1,3,4]
,
我会直接生成模式,而不是使用组合。
创建一个长度为 1 的列表,然后向后迭代,相应地更改列表。
def generate_increment(n):
lst = [1] * n
result = []
for k in range(n-1):
lst[-1] += 1
result.append(lst[:])
for i in range(len(lst)-2,k,-1):
a,b = lst[i],lst[i+1]
if a != b:
lst[i] = b
result.append(lst[:])
return result
>>print(*generate_increment(4),sep='\n')
[1,4]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。