Python插入与Ruby插入

时间:2015-10-26 05:27:00

标签: python arrays ruby

Python和Ruby都有insert方法。

的Python:

>>> a=[1,2,3,4,5]
>>> a.insert(0, 0)
>>> a
[0, 1, 2, 3, 4, 5]

红宝石:

a=[1,2,3,4,5]
# => [1, 2, 3, 4, 5]
a.insert(0,0)
# => [0, 1, 2, 3, 4, 5]

它们具有相同的效果,但如果给出负指数,则结果不同。

的Python:

>>> a=[1,2,3,4,5]
>>> a.insert(-1, 6)
>>> a
[1, 2, 3, 4, 6, 5]

红宝石:

a=[1,2,3,4,5]
# => [1, 2, 3, 4, 5]
a.insert(-1, 6)
# => [1, 2, 3, 4, 5, 6]

为什么会出现这种差异?怎么理解?

3 个答案:

答案 0 :(得分:4)

python中的

:insert(x,val),表示插入x之前的位置。

so, a.insert(-1, 6)-> put the 6 before -1(location)
红宝石中的

:表示插入此位置x。

so, a.insert(-1, 6)-> put the 6 at -1.

答案 1 :(得分:4)

在Python中,新对象插入到某个索引的元素之前。给定0的插入点,在索引0的项目之前插入一个新元素,这会导致插入的项目成为第一个。给定-1的插入点,在最后一个项之前插入一个新元素,因此它成为倒数第二个元素。

如果您想在Python list的末尾插入内容,只需使用append()

答案 2 :(得分:3)

在Python中,负指数的insert()与正指数更为一致。 a.insert(i, x)始终等同于a[i:i] = [x]。但是,您不能在结束后插入负数索引。

您可以使用a.insert(len(a), x),相当于a.append(x)

在Ruby中,Array#insert明确表示如果索引为负数,则在元素之后插入新值

  

负数索引从数组末尾向后计数,其中-1是最后一个元素。如果使用负索引,则将在该元素之后插入给定值,因此使用索引-1将在数组末尾插入值。