如何使用列表理解将列表附加到现有列表

How to append lists using list comprehension to an exsiting list

我想将项目附加到 现有 列表中,这些列表是通过列表理解生成的单个列表。

source = [1,2,3,4,5]

我希望结果看起来像 [[2], [4]]

我尝试了以下方法(以及“[]”和“()”的其他疯狂组合,但一无所获)...

target = []
target.append([r for r in source if r == 2 or r == 4])
print(target)
[[2, 4]]

target = []
target.append([[r] for r in source if r == 2 or r == 4])
print(target)
[[[2], [4]]]

target = []
target.append([r] for r in source if r == 2 or r == 4)
print(target)
[<generator object <genexpr> at 0x0000022F1986E4C8>]

只需使用 extend 进行此列表理解:

target.extend([[r] for r in source if r in [2, 4]])

现在 target 将是:

[[2], [4]]

您可以改用list.extend方法:

target.extend([r] for r in source if r == 2 or r == 4)

而不是 .append().extend:

source = [1,2,3,4,5]
target=[]
target.extend([t] for t in source if t==2 or t==4)
print(target)

就这样做

source = [1,2,3,4,5]
target = [[r] for r in source if r==2 or r==4]
print(target)
# output: [[2], [4]]

如果目标列表不为空并且你想追加新值,你可以试试这个

source = [1,2,3,4,5]
target = [[7],[8]]
target.extend([[r] for r in source if r==2 or r==4])
print(target)
# output: [[7], [8], [2], [4]]

source = [1,2,3,4,5]
target = [[7],[8]]
target += [[r] for r in source if r==2 or r==4]
print(target)
# output: [[7], [8], [2], [4]]

您可以使用 .extend() 而不是 .append():

source = [1, 2, 3, 4, 5]
target = []

target.extend([r] for r in source if r == 2 or r == 4)

print(target)
# [[2], [4]]

在这种情况下可以使用 .extend(),因为它接收一个可迭代对象作为参数。