python-3.x - 以尽可能低的复杂度生成给定列表的所有子序列
问题描述
我有一个整数元素列表,我想生成列表的所有子序列,我试过这段代码 -
def sequences(arr, n):
sheet = []
opsize = (2**n)
for counter in range( 1, (int)(opsize)) :
t = []
for j in range(0, n) :
if (counter & (1<<j)):
t.append(arr[j])
sheet.append(t)
return sheet
如果输入列表 - [1,2,2]
输出 - [ [1], [2], [1, 2], [2], [1, 2], [2, 2], [1, 2, 2] ]
但是对于 n 的任何高值都需要很长时间。谁能建议我任何其他方法以尽量减少其复杂性。
谢谢你。
解决方案
推荐阅读
- docker - Visual Studio Docker Compose - 在调试会话结束后停止并删除容器
- amazon-web-services - redshift 用户定义的 Lambda 函数返回错误
- javascript - Javascript:打开新窗口并从当前窗口复制 css 引用
- java - Java 正则表达式捕获组但不匹配()
- java - Postgresql 中的有符号与无符号 bigint
- typescript - 如何为 Typescript 和 Vue 3.0 配置类型(捆绑器和运行时编译)
- android - Android 应用程序错误 android.view.InflateException。使用 Jetpack 导航组件
- http - 有没有办法区分与 IntermediateSystem 相关的 HTTP 请求和响应标头?
- javascript - 循环多个变量 jQuery 以显示给用户
- python - 用列组的最大值替换列的 inf 值