Python列表分配和内存分配

2024-09-30 05:15:21 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么另一个链表的索引赋值会形成链表,而另一个链表的链表切片(一个元素切片)赋值会使链表成为原始链表的一部分,而具有索引的切片和元素都指向同一个元素?内存分配发生了什么变化?你知道吗

l = [1,2,3,4,5,6]
l[2:3] = [7,8]  # gives [1,2,7,8,5,6]

# whereas:

l[2] = [7,8]  # gives [1,2,[7,8],4,5,6]

l[2]=3l[2:3]=3


Tags: 内存元素切片指向链表赋值giveswhereas
1条回答
网友
1楼 · 发布于 2024-09-30 05:15:21

你的假设是错误的,当你说l[2]=3和l[2:3]=3时。你知道吗

事实上,情况就是这样:

l = [1, 2, 3, 4, 5, 6]

l[2]  # 3

l[2:3]  # [3]

l[2]是索引2中的元素。 l[2:3]是从索引2开始的长度为1的片(子列表)。你知道吗

因此,赋值给l[2]change to element并赋值给l[2:3]会用另一个切片替换一个切片,正如您所注意到的:

l = [1, 2, 3, 4, 5, 6]
l[2:3] = [7,8]  # l is now [1, 2, 7, 8, 4, 5, 6]

l = [1, 2, 3, 4, 5, 6]
l[2] = [7,8]  # l is now [1, 2, [7, 8], 4, 5, 6]

相关问题 更多 >

    热门问题