|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
list1 = [1,3,2]
list2 = list1
list1.sort()
这个时候list2和list1都是 [1,2,3]
list1 = [1,3,2]
list2 = list1
list1 = [4,5,6]
为什么list2没有跟着list1变啊
求指导 谢谢:dizzy:
这里需要说明的python两个概念。
1.赋值:
大多是语言的赋值都是用A = 5这样的形式,但含义却大有不同。比如说C语言是先int A为A申请一个内存空间,而后将5放入这个空间中。而python则是将5放入内存空间并给它贴上A这个标签。
2.变量:
python有可变的变量和不可变的变量两种。整数,字符串为不可变的变量,列表为可变的变量,看一个变量是否可变是看改变后它的内存地址是否变了。
举个例子。
>>> a = 5
>>> b = a
>>> id(a)
1679341360
>>> id(b)
1679341360
a, b的地址是一样的,都指向1679341360
再
>>> a =3
>>> id(a)
1679341296
>>> id(b)
1679341360
>>> a
3
>>> b
5
a指向了新的地址,这跟你第二个程序一样。
而
>>> list1 = [1, 3, 2]
>>> list2 = list1
>>> id(list1)
55532680
>>> id(list2)
55532680
>>> list1.sort()
>>> id(list1)
55532680
list1排序后仍处于原来的地址,即是可变的变量,所以list1和list2一样。
|
|