当前位置: 代码迷 >> python >> Python插入vs Ruby插入
  详细解决方案

Python插入vs Ruby插入

热度:59   发布时间:2023-06-16 10:21:57.0

Python和Ruby都有insert方法。

蟒蛇:

>>> 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]

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

蟒蛇:

>>> 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]

为什么会有这种差异? 如何理解?

在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.

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

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

在Python中,带负索引的insert()与正索引更一致。 a.insert(i, x)总是等于a[i:i] = [x] 但是,您不能在结束后使用负数索引。

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


在Ruby中, 明确表示如果索引为负数,则在元素后面插入新值:

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