玩蛇网提供最新Python编程技术信息以及Python资源下载!

请教Python切片分割及插入问题

n = [1,5]
n[1:1] = [2,3,4]
n
>>>[1,2,3,4,5]

n[1:1]返回是[]
为什么[2,3,4]会插入到1,5之间而不是后面,如果想插入一组在[1,5]之后要如何通过切片方式完成?

谢谢楼下几位耐心解答,我又试了试,找到了原理,如果n[1:1]就是在下标1之前插入,如果想在后面插入,可以写成n[2:2] = [2,3,4] 或者 n[2:-1] = [2,3,4] 或者 n[2:] = [2,3,4]

你这个不就是插入到之间了么?往后加用append

首先清楚切片[start:end]
取代位置[start,end-1]
1. 如果end-1 >= start,那么取代这一段的值。
2. 反之,则在start-1后面插入。
[1:1] 从下标1开始,下标1是5,本来要取代5的,但是第二个参数1,意思是终止于下标1,但是不包括1.
所以就变成了插入[2,3,4]。
你可以做个试验
n = [1,5]
n[1:2] = [2,3,4]
n = [1,2,3,4] 这时候2,3,4 就取代了5

Python-2.7.8/objects/listobject.c +687

c    else if (d > 0) { /* Insert d items */
        k = Py_SIZE(a);
        if (list_resize(a, k+d) < 0)
            goto Error;
        item = a->ob_item;
        memmove(&item[ihigh+d], &item[ihigh],
            (k - ihigh)*sizeof(PyObject *));
    }
    for (k = 0; k < n; k++, ilow++) {
        PyObject *w = vitem[k];
        Py_XINCREF(w);
        item[ilow] = w;
    }

1代表从编号是1的元素前插入,也就是5前,所以插入了234就是12345。而你问的怎么插入1和5之间不正是你展示的例子吗

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd18410.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年06月20日 - 16时42分19秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules