Y小y 发表于 2020-9-2 09:47:35

列表插入元素问题

本帖最后由 Y小y 于 2020-9-2 10:15 编辑

sample = ['1325','City Hospital',0.67]
sample.insert(-2,'2014/01/01')
sample

为什么结果是['1325', '2014/01/01', 'City Hospital', 0.67],而不是['1325','City Hospital','2014/01/01',0.67]。
不是插入在-2位置上吗?

sunrise085 发表于 2020-9-2 09:50:54

本帖最后由 sunrise085 于 2020-9-2 09:55 编辑

这是规定
insert就是向指定的位置的前面插入元素
实际上 ,insert是先找到你指定的索引值,然后将进行如下拼接:sample[:index]+[待插入元素]+sample

Y小y 发表于 2020-9-2 09:57:02

sunrise085 发表于 2020-9-2 09:50
这是规定
insert就是向指定的位置的前面插入元素

但是插入位置是正数的时候,比如说插入在2上,它就是插在索引2上啊,是负数的时候为啥就插在前一个了呢?

昨非 发表于 2020-9-2 10:05:01

Y小y 发表于 2020-9-2 09:57
但是插入位置是正数的时候,比如说插入在2上,它就是插在索引2上啊,是负数的时候为啥就插在前一个了呢?

因为
sample[-1] #是最后一项
sample[-2]#是倒数第二项

索引为负时,下标不是从零开始的

Y小y 发表于 2020-9-2 10:08:49

昨非 发表于 2020-9-2 10:05
因为

索引为负时,下标不是从零开始的

我知道啊,但是上面不是要插在-2位置吗,然后结果是‘2014/01/01’插在了倒数第三啊,我就不明白了。

void_island 发表于 2020-9-2 10:09:13

Y小y 发表于 2020-9-2 09:57
但是插入位置是正数的时候,比如说插入在2上,它就是插在索引2上啊,是负数的时候为啥就插在前一个了呢?

请这么理解:
插入元素是在你指定索引值元素的前面插入,你这里的代码应该这么运算
1. 找到 [-2] 对应的元素
2. 在这个元素前面插入你给的元素

正数索引值也是如此。

昨非 发表于 2020-9-2 10:11:35

Y小y 发表于 2020-9-2 10:08
我知道啊,但是上面不是要插在-2位置吗,然后结果是‘2014/01/01’插在了倒数第三啊,我就不明白了。

insert()方法不支持插入到最后一个,无法实现append()的功能,所以只能这么理解了
(乌龟的屁股{:10_277:})

sunrise085 发表于 2020-9-2 11:37:23

Y小y 发表于 2020-9-2 09:57
但是插入位置是正数的时候,比如说插入在2上,它就是插在索引2上啊,是负数的时候为啥就插在前一个了呢?

你有认真看我的回答吗?
请看第二句和第三句
insert就是向指定的位置的前面插入元素
insert是先找到你指定的索引值,然后将进行如下拼接:sample[:index]+[待插入元素]+sample
很难理解吗?
就像是跑步比赛,你超过了第二名,你就是第二名,但是你超过了倒数第二名,那么你是倒数第三名。
这个很难理解?

sunrise085 发表于 2020-9-2 11:40:20

Y小y 发表于 2020-9-2 10:08
我知道啊,但是上面不是要插在-2位置吗,然后结果是‘2014/01/01’插在了倒数第三啊,我就不明白了。

这是你自己的理解错误
sample.insert(-2,'2014/01/01')
不是插在倒数第二个位置,而是插在倒数第二个元素的前面
同理
sample.insert(2,'2014/01/01')
这样写也不叫插在第二个位置,而是插在第二个元素的前面

阁阁下 发表于 2020-9-2 13:06:57

-2不就是从右往左第三个数吗,-2,-1,0

sunrise085 发表于 2020-9-2 13:26:03

阁阁下 发表于 2020-9-2 13:06
-2不就是从右往左第三个数吗,-2,-1,0

从右边数的时候,没有0,倒数第一个的下标是-1

阁阁下 发表于 2020-9-2 13:58:47

sunrise085 发表于 2020-9-2 13:26
从右边数的时候,没有0,倒数第一个的下标是-1

嗯嗯,刚刚已经知道了
页: [1]
查看完整版本: 列表插入元素问题