声明一个空列表

时间:2011-08-03 20:00:43

标签: python

我刚注意到将两个空列表声明为:

list1 = list2 = []
与以下相比,

产生了完全不同的结果:

list1 = []
list2 = []

我不是这个问题与整个程序有关,或者结果很重要。不过这里是the whole program。两种宣言方式之间有什么区别吗?

3 个答案:

答案 0 :(得分:9)

list1 = list2 = []

将同一个空列表实例([])分配给list1和list2。这是因为对象实例是通过引用分配的。

您可以这样做:

list1, list2 = [], []

为两个变量分配两个不同的列表。

您可以按如下方式查看:

list1 = list2 = []
print id(list1)  # Same as id(list2)
print id(list2)  # Same as id(list1)

list1, list2 = [], []
print id(list1)  # Different than id(list2)
print id(list2)  # Different than id(list1)

答案 1 :(得分:6)

list1 = list2 = []

可以写成:

list2 = []
list1 = list2

你所做的只是制作一个别名(有效)。

答案 2 :(得分:4)

当你说:

list1 = list2 = []

只有一个空列表,你将list1和list2都指向它。

当你说:

list1 = []
list2 = []

有两个空列表,每个名称都有不同的名称。

请记住:Python中的赋值永远不会复制数据。因此,两个名称可以指向相同的可变值(列表),并且它们都将看到对其进行的任何更改。