18368596936 发表于 2021-6-30 08:22:44

关于程序执行顺序问题


>>>list 1=
>>>list 3=list 1
>>>list 1.sort()
>>>list 3



list 3只执行把list 1的原列表赋值给它,而把list 1列表排序是在后一步执行的,list 3只赋值的是原列表,为什么最后执行出来却是排序后的列表,跪求大神解答

逃兵 发表于 2021-6-30 08:28:55

“list 3只执行把list 1的原列表赋值给它”这句话理解是错的


应该理解为将名为list3的标签贴在了上
此时list1和list3指向的是同一个列表

我们可以通过打印他们的ID来查看

>>> list1 =
>>> list3 = list1
>>> id(list1)
43010056
>>> id(list3)
43010056

改变了本身之后,所有指向它的标签都会跟随它而改变

所以他们都是原列表,不存在新旧

如果你只是想copy一份

可以使用切片的方式

>>> list1 =
>>> list3 = list1[:]#切片
>>> list1.sort()
>>> print(list1)

>>> print(list3)

wp231957 发表于 2021-6-30 15:37:35

逃兵 发表于 2021-6-30 08:28
“list 3只执行把list 1的原列表赋值给它”这句话理解是错的




真的很好奇   变量名应该不支持空格的
>>>list 1=
>>>list 3=list 1
>>>list 1.sort()
>>>list 3

于是乎测试了一下,结果真的 ???

逃兵 发表于 2021-6-30 15:40:07

wp231957 发表于 2021-6-30 15:37
真的很好奇   变量名应该不支持空格的
>>>list 1=
>>>list 3=list 1


不行
页: [1]
查看完整版本: 关于程序执行顺序问题