我想将空列表分配给多个变量。我已经尝试过这些:
# 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方式(更好的方式)。
答案 0 :(得分:1)
最简单的解决方案:
a = b = c = d = []
在我看来,虽然它是单个引用对象的引用(但a.append("foo")
也突变了b
,c
和d
,但还是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]
访问不同的列表。