python有序序列_python – 生成序列的“有序子集”的最有效方法

我需要生成

Python中序列的所有“有序子集”(如果我没有使用正确的数学术语,请道歉),省略的元素替换为None.Given [1,2],我想要[(1,2), (1,无),(无,2),(无,无)].每个“有序子集”应具有以下属性:在每个位置,它与种子序列中的元素完全相同,或者为无.

我可以很容易地生成缺少以下元素的子集:

from itertools import combinations

for length in xrange(len(items), 0, -1):

for combination in combinations(items, length):

yield combination

但是我无法弄清楚重建缺失元素的最有效方法是什么.我的第一个想法是做这样的事情:

from itertools import combinations

indexes = range(len(items))

for length in xrange(len(items), 0, -1):

for combination in combinations(indexes, length):

yield tuple(items[i] if i in combination else None for i in indexes)

只是想知道是否有人能够发现任何明显的缺陷,或者是否有一个我错过的更有效的解决方案. (请注意,这些项目将是一个相当短的列表,通常在10个元素之下,因此我不关心内部循环中“组合”的O(N)搜索.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值