将空列表分配给变量的Pythonic方法是什么?

时间:2019-05-31 17:02:59

标签: python

我想将空列表分配给多个变量。我已经尝试过这些:

# method 1
a = b = []

# method 2
c, d = [], []


print('\nBefore')
print(f'a: id={id(a)} value={a}')
print(f'b: id={id(b)} value={b}')
print(f'c: id={id(c)} value={c}')
print(f'd: id={id(d)} value={d}')

b = [1,2,5]
c = [6,4,2]

print('\nAfter')
print(f'a: id={id(a)} value={a}')
print(f'b: id={id(b)} value={b}')
print(f'c: id={id(c)} value={c}')
print(f'd: id={id(d)} value={d}')

我可以看到的区别是,a和b在初始化时都指向相同的位置,但是在赋值后会更改。将空列表分配给多个变量的Python方法是什么?

编辑:问题不是关于如何分配变量,而是有关分配变量的Python方式(更好的方式)。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案:

a = b = c = d = []

在我看来,虽然它是单个引用对象的引用(但a.append("foo")也突变了bcd,但还是Python的意思。

要初始化完全独立的列表对象,如注释中所述:

a, b, c, d = ([] for _ in range(4))

a, b, c, d = [], [], [], []     # or list(), list(), list(), list()

这不是很漂亮,我同意。但是,您真的需要四个单独的列表变量吗?我认为您应该这样做:

lists = ([] for _ in range(4))

然后,您可以使用lists[0]lists[3]访问不同的列表。