python - python - 如何将列表中的每个项目附加到Python列表中的列表中?
问题描述
对不起,令人费解的标题。例如,我有一个列表:[a, b, c, d]
我想以这种格式生成具有不同组合的排名列表:
[a]
[b]
[c]
[d]
[a, b]
[a, c]
[a, d]
[a, b, c]
[a, b, d]
[a, b, c, d]
我无法生成此列表。到目前为止,我首先做的是通过每次迭代添加一个元素来生成每个列表:
[]
[a]
[a, b]
[a, b, c]
然后我生成了排名列表的长度:
[]
[]
[]
[]
[a]
[a]
[a]
[a, b]
[a, b]
[a, b, c]
现在我被困在这里了。Python 中是否有一个库允许我这样做,或者你只能在代码中手动执行此操作?我要做的最后一件事是从我在顶部生成的原始列表中附加一个一对一的列表。
这是我尝试过的代码,假设original_list
是我在顶部制作的原始列表,并且new_list
是我在此文本上方生成的列表:
for x in range(0, len(original_list)):
new_list[x].append(original_list[x])
这显然不起作用,因为它将每个项目附加original_list
到new_list
.
编辑:元素应该按字母顺序排列,只有最后一个元素具有不同的组合,没有重复元素,因为我在一个包含 21 个项目的列表上尝试这样做。
解决方案
通过列表附加到新列表中使用简单的迭代:
lst = ['a', 'b', 'c', 'd', 'e']
nlst = []
for i in range(len(lst)):
for y in lst[i:]:
nlst.append(lst[:i] + list(y))
for x in nlst:
print(x)
# ['a']
# ['b']
# ['c']
# ['d']
# ['e']
# ['a', 'b']
# ['a', 'c']
# ['a', 'd']
# ['a', 'e']
# ['a', 'b', 'c']
# ['a', 'b', 'd']
# ['a', 'b', 'e']
# ['a', 'b', 'c', 'd']
# ['a', 'b', 'c', 'e']
# ['a', 'b', 'c', 'd', 'e']
推荐阅读
- node.js - 使用 Node 和 SSH2 将缓冲区数据写入 SFTP 服务器
- java - Java 8:将流和 lambda 引入方法
- rpm - GitHub Actions 构建 RPM
- c# - Marshal 从 ushort 数组 C# 中读取结构
- android - Google Play 控制台:包含设备按钮已禁用
- css - 如何更改设置为覆盖的图像的调整大小行为?
- python - 如果代码中有 ImageTk 我无法使用 python 应用程序打开 .py 文件
- nlp - 为什么嵌入矩阵中有所有值都为 0 的行?
- java - Java 8流中的过滤条件
- python - 在这种情况下如何从列表理解转到循环?