首页 > 解决方案 > 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_listnew_list.

编辑:元素应该按字母顺序排列,只有最后一个元素具有不同的组合,没有重复元素,因为我在一个包含 21 个项目的列表上尝试这样做。

标签: pythonlistfor-loop

解决方案


通过列表附加到新列表中使用简单的迭代:

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']

推荐阅读