【问题标题】:What does list.insert() in actually do in python?list.insert() in 实际上在 python 中做了什么?
【发布时间】:2017-12-03 01:56:00
【问题描述】:

我有这样的代码:

squares = []
for value in range(1, 5):
    squares.insert(value+1,value**2)

print(squares)
print(squares[0])
print(len(squares))

输出是:

[1, 4, 9, 16]

1

4

因此,即使我要求 python 在索引“2”处插入“1”,它也会在第一个可用索引处插入。那么“插入”是如何做出决定的呢?

【问题讨论】:

  • 如果没有元素,它只会将其插入tail 而从你的例子来看,你提到的行为并不明确
  • 它完全按照文档中的说明进行操作。哪一部分不清楚?
  • @JohnZwinck 是否“准确地”说如果索引大于列表的 len 会发生什么?

标签: python python-3.x list insert


【解决方案1】:

来自Python3 doc

list.insert(i, x)

在给定位置插入一个项目。首先 参数是要插入的元素的索引,所以 a.insert(0, x) 在列表的前面插入,而 a.insert(len(a), x) 等价于 a.append(x)。

没有提到的是你可以给出一个超出范围的索引,然后 Python 将追加到列表中。

如果您深入研究Python implementation,您会在执行插入的ins1 函数中找到以下内容:

if (where > n)
    where = n;

所以基本上 Python 会将您的索引最大化到列表的长度。

【讨论】:

    【解决方案2】:

    基本上,它类似于追加,不同之处在于它允许您在列表中的任何位置插入新项目,而不是在末尾。

    【讨论】:

    • 请在您的答案中添加代码示例,这样更容易理解。
    猜你喜欢
    • 2017-04-28
    • 1970-01-01
    • 2013-06-02
    • 2020-11-21
    • 2015-02-26
    • 2017-06-29
    • 2013-06-13
    • 2021-10-25
    • 2011-08-12
    相关资源
    最近更新 更多