gpt4 book ai didi

python - 为什么 a.insert(-1, x) 不模仿 a.append(x)?

转载 作者:行者123 更新时间:2023-11-28 17:14:21 25 4
gpt4 key购买 nike

所以我有以下 Python 代码,它将数字 1-10 append 到列表 values:

values = []

for value in range(1, 11):
values.append(value)

print(values)

并且,正如预期的那样,给我们 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

尽管不切实际,只是出于好奇,我尝试使用 insert() 而不是 append() 重新创建此结果:

values = []

for value in range(1, 11):
values.insert(-1, value)

print(values)

这给了我结果 [2, 3, 4, 5, 6, 7, 8, 9, 10, 1]

我也对其他范围进行了尝试,每次都发生同样的事情:它是按升序排列的,除了最小的数字在最后。

来自Python Documentation Tutorial ,我现在知道 a.insert(len(a), x) 可以用来模仿 a.append(x)。但是,我仍然不明白为什么将值插入列表中的最后一个位置除了最小值外都有效。

最佳答案

要理解的基本问题是 -1len(a) 不同。它确实与 len(a) - 1 相同:

In [396]: x = [1, 2, 3]

In [397]: x[-1]
Out[397]: 3

In [398]: x[len(x) - 1]
Out[398]: 3

当列表的大小为 1 或更大时,len(a) - 1 将始终指向最后一个元素之前的位置(或者,从技术上讲,指向最后一个元素所在的位置目前是),这是 list.insert 将放置新项目的地方。

In [400]: x.insert(-1, 4); x
Out[400]: [1, 2, 4, 3]

如您所知,len(a) 指向最后一个元素之后的位置,这是 list.append 插入元素的位置。因此,-1len(a) - 1 将指向最后一个元素的位置,而 list.insert(-1, ... ) 会将最后一个元素向右推,并将新元素放在最后一个元素的旧位置。

关于python - 为什么 a.insert(-1, x) 不模仿 a.append(x)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com