如何使用列表推导将列表附加到现有列表

4
我想将通过列表推导式生成的单独列表作为项附加到现有列表中。
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代替append。列表推导式总是创建一个单一的列表,而.append则总是添加那个单一的列表 - juanpa.arrivillaga
5个回答

1
你可以使用 .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(),因为它接收一个可迭代对象作为参数。

1
谢谢大家。我选择了这个答案,因为它清楚地展示了该怎么做,同样重要的是它也解释了为什么这么做。 - ThomasAJ

0

只需使用 extend 进行此列表推导:

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

现在target将会是:

[[2], [4]]

0
你可以使用 list.extend 方法替代:
target.extend([r] for r in source if r == 2 or r == 4)

0

不要使用.append(),而是使用.extend

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

0

就这样做

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接