将项目插入列表而不使用insert()或append()Python

时间:2017-03-21 19:53:27

标签: python python-3.x

我一直在尝试为作业工作,我是新编码的人。部分原因是通过输入所需项目和没有内置函数的索引,使用户插入项目列表。目前,我已经获得了替换该索引中的项目的代码,但我无法让它去做它应该做的事情。

对象是项目,列表在主函数中。

def add(list, obj, index):
    nlist = []
    print("Your list ", list)
    item = input("Insert item: ")
    index = int(input("Index: "))
    i = 0
    for e in list:
        if i < index:
            nlist.append(e)
            i += 1
        elif i == index:
            nlist.append(obj)
            i += 1
        elif i > index:
            nlist.append(e)
            i += 1
    print("Your new list ", nlist)

3 个答案:

答案 0 :(得分:10)

想象一下,你有一套磁力列车。比如enter image description here

你想在第二辆火车后加一辆火车。因此,您要在索引12之间拆分列车,然后将其附加。前面部分是从0到1的所有部分,第二部分是从2到结尾的所有内容。

幸运的是,python有一个非常好的切片语法:x[i:j]表示从i(包括)切换到j(不包括)。 x[:j]表示从前面切换到jx[i:]表示从i切片直到结束。

所以我们可以做到

def add(lst, obj, index): return lst[:index] + [obj] + lst[index:]

答案 1 :(得分:1)

a = [1,2,3,4,5]
idx = 3
value=[7]

def insert_gen(a,idx,value):
    b=a[:idx] + value + a[idx:]
    return b

final = insert_gen(a,idx,value)
print(final)

答案 2 :(得分:0)

用包含对象的列表替换空切片:

lst[index:index] = [obj]

演示:

>>> for index in range(4):
        lst = [0, 1, 2]
        lst[index:index] = [9]
        print(lst)
    
[9, 0, 1, 2]
[0, 9, 1, 2]
[0, 1, 9, 2]
[0, 1, 2, 9]