所以我有以下 Python 代码,它将数字 1-10 添加到列表中values:
values = []
for value in range(1, 11):
values.append(value)
print(values)
Run Code Online (Sandbox Code Playgroud)
并且,正如预期的那样,给了我们[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)
Run Code Online (Sandbox Code Playgroud)
这给了我结果[2, 3, 4, 5, 6, 7, 8, 9, 10, 1]。
我也对其他范围进行了尝试,每次都会发生同样的事情:它按升序排列,除了最小的数字位于末尾。
从Python文档教程中,我现在知道a.insert(len(a), x)可以用来模仿a.append(x)。但是,我仍然不明白为什么除了最小值之外,将值插入到列表中的最后一个位置是有效的。
要理解的基本一点是-1与 不同len(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
Run Code Online (Sandbox Code Playgroud)
当列表的大小为 1 或更大时,thenlen(a) - 1将始终指向最后一个元素之前的位置(或者从技术上讲,指向最后一个元素当前所在的位置),这就是list.insert放置新项目的位置。
In [400]: x.insert(-1, 4); x
Out[400]: [1, 2, 4, 3]
Run Code Online (Sandbox Code Playgroud)
正如您已经想到的,len(a)指向最后一个元素之后的位置,这是list.append插入元素的位置。因此,-1、 或len(a) - 1将指向最后一个元素的位置,并将list.insert(-1, ...)最后一个元素向右推,并将新元素放置在最后一个元素的旧位置。
| 归档时间: |
|
| 查看次数: |
688 次 |
| 最近记录: |