如何在一行中一次将值附加到不同的列表?

How do I append values to different lists at one time, in one line?

我是 python 的初学者,但我在互联网上找不到任何可以帮助我解决这个问题的东西:

我想一次将不同的值附加到 2 个不同的列表(实际问题比这更复杂,但我只需要知道正确的语法,所以我正在简化它)

test1= []
test2= []
[test1.append(1) and test2.append(2) for i in range (10)]

这不会附加到两个列表中,我该如何实现?

如果你的具体例子是你想要的,使用参数解包一次分配多个值:

test1, test2 = [1] * 10, [2] * 10

您还可以使用 zip(*x) 习惯用法来转置 2 列列表:

test1, test2, map(list, zip(*[[1, 2]] * 10))

如果您可以使用元组而不是列表,则可以省略 map(list, ...) 包装器。

据我所知,理解 side-effects 的最好方法是使用大小为零的 collections.deque,因此它运行迭代器但不存储任何结果:

from collections import deque

test1, test2 = [], []
deque(((test1.append(1), test2.append(2)) for _ in range(10)), maxlen=0)

生成器每次都创建元组 (None, None)(自 list.append returns None),deque 立即丢弃。

首先,我不明白为什么你需要在一行中使用它,似乎没有充分的理由,无论如何我想你可以这样做:

test1, test2 = [], []
for _ in range(10): test1.append(1); test2.append(2)