本篇文章为大家展示了使用python怎么输出一个序列的所有子序列,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
十多年专注成都网站制作,成都企业网站定制,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于成都企业网站定制,高端网页制作,对木托盘等多个方面,拥有多年的网站推广经验。如下所示:
def sub(arr): finish=[] size = len(arr) end = 1 << size #end=2**size for index in range(end): # shift index array = [] for j in range(size): # 00,01,10,11 is symmetrical if (index >> j) % 2: # this result is 1, so do not have to write == array.append(arr[j]) # print(array) finish.append(array) return finish
移位运算符 << 的优先级大于赋值 =
用01二进制串决定数组中的每个数字是否输出
[]=000;[1]=100;[2]=010;[3]=001;[1,2]=110;[1,2,3]=111…
如何实现?
第一个循环实现的是01串的遍历,eg.由000到111
第二个循环实现的是数组的遍历,eg.将000与数组中的每一位数字做判断
在if语句中,用到了向右移位,由于二进制串是对称的,所以我们可以将01串从后向前与数组中的每一位数字做判断。
eg.001与100对称,110与011对称…
在001中,最后一位是1,说明数组中3需要输出
但是在我们遍历数组的时候,先遇到的是1与arr[0],不过由于对称性,这种情况其实与在100中,后遇到的是1与arr[2]
上述内容就是使用python怎么输出一个序列的所有子序列,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。