如何解决与列表中的多个值组合-创建子列表
我有以下问题:
nums = [2,4,2,10,5]
我想获得一些规则如下所示的子列表:
sublist = [[2],[2,4],2],10],5],[4],[4,5] ... ]
我的代码:
def combinator(nums,N):
for i in range(2**N):
combo = []
for j in range(N):
if (i >> j) % 2 == 1:
combo.append(nums[j])
yield combo
和
out = []
N = len(nums)
for i in combinator(nums,N):
out.append(i)
该代码会生成包含所有组合的有害列表。 我该如何改善代码?
解决方法
获取列表并返回具有与原始列表中的相邻元素相同顺序的所有子列表的列表的函数:
def sublists(xs):
return [xs[n:m+1] for n in range(len(xs)) for m in range(n,len(xs))]
print(sublists([2,4,2,10,5]))
结果:
[[2],[2,4],2],10],5],[4],[4,[2],[10],[10,[5]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。