python实现输出一个序列的所有子序列示例

yipeiwu_com6年前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实现输出一个序列的所有子序列示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

重命名批处理python脚本

将Copy of ********.bmp或者Copy of Copy of ********.bmp 此类文件统一命名为********0.bmp 或者********00.bmp等格式...

Python实现替换文件中指定内容的方法

本文实例讲述了Python实现替换文件中指定内容的方法。分享给大家供大家参考,具体如下: 这里使用python编写的程序,实现如下功能:将文件中的指定子串 修改为 另外的子串 编写的py...

Python中那些 Pythonic的写法详解

前言 Martin(Bob大叔)曾在《代码整洁之道》一书打趣地说:当你的代码在做 Code Review 时,审查者要是愤怒地吼道: “What the fuck is this shi...

Linux 修改Python命令的方法示例

Linux 修改Python命令的方法示例

Linux默认python命令指向的是/usr/bin下的python,这个python指向同目录下python2,以及pip默认也是python2的pip,想修改成pip指向pip3,...

Python实现简单的语音识别系统

Python实现简单的语音识别系统

最近认识了一个做Python语音识别的朋友,聊天时候说到,未来五到十年,Python人工智能会在国内掀起一股狂潮,对各种应用的冲击,不下于淘宝对实体经济的冲击。在本地(江苏某三线城市)做...