jcpython2 发表于 2022-5-14 17:15:57

数组列表分片疑问

list1 =
list2 = list1
list1 =
print(list2)
list1.sort()
print(list2)
print(list1)




这里为什么list2 = list1    并且 list1 已经重新指定为 6 5 4后第一次输出是 3 2 1 但是在sort后 list2再次输出还是 3 2 1?? 不是应该跟随list1变为4 5 6?

jcpython2 发表于 2022-5-14 17:20:10

list1 =
list2 = list1
print(list2)
list1 = [ 4,5,6]
print(list2)




这一段我预期是第一次输出321 第二次输出456 ,但两次都输出321

Twilight6 发表于 2022-5-14 17:28:11

jcpython2 发表于 2022-5-14 17:20
这一段我预期是第一次输出321 第二次输出456 ,但两次都输出321


这里可以这样理解:

list1 和 list2都是一个标签,此时将 list1 标签贴在了列表 上,即这段代码:
list1 =

然后我们将 list2 标签贴在 list1 标签所在的列表上 ,即代码:
list2 = list1

这个时候我们打印 list2 ,输出结果毋庸置疑:

接下来继续看下面的代码:

此时 list 2 和 list1 标签都贴在 列表上,将 list1 的标签重新贴在另一个列表 list2 上:
list1 = [ 4,5,6]

最后再次打印 list2,因为 list2 还是贴在 这个列表上所以还是打印该列表,最终两次打印的结果都为

Twilight6 发表于 2022-5-14 17:30:36

Twilight6 发表于 2022-5-14 17:28
这里可以这样理解:

list1 和 list2都是一个标签,此时将 list1 标签贴在了列表 上, ...



前面的 sort() 是对 list1 进行排序,自然不影响 list2 ,因为 list2 还是指向列表

jcpython2 发表于 2022-5-14 23:57:34

Twilight6 发表于 2022-5-14 17:28
这里可以这样理解:

list1 和 list2都是一个标签,此时将 list1 标签贴在了列表 上, ...

list2 = list1 后是list2贴上身上,而不是list1身上,并且是独立的,当list1或list2用sort排序后,数组就变动,让list1 list2 输出结果也变动

如果要把list2的数值独立出来,就用 list2 = list1[:]对吧

我本来错的地方在于 以为list2 贴在list1身上,应该是list1 list2都贴在才对


这样理解没错了吧?

Twilight6 发表于 2022-5-15 09:32:50

jcpython2 发表于 2022-5-14 23:57
list2 = list1 后是list2贴上身上,而不是list1身上,并且是独立的,当list1或list2用sort ...



是的

页: [1]
查看完整版本: 数组列表分片疑问