在没有 insert() 或 append() Python 的情况下将项目插入列表

新手上路,请多包涵

我一直在尝试处理一项任务的功能,而且我是编码新手。它的一部分是让用户通过输入所需的项目和没有内置功能的索引来将项目插入到列表中。目前,我有代码来替换该索引中的项目,但我无法让它做它应该做的事情。

object就是item,list在main函数里面。

 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)

原文由 SE Chou 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 597
2 个回答

想象一下,您拥有其中一套磁性火车。喜欢 在此处输入图像描述

您想在第二节车厢之后添加一节火车车厢。因此,您需要将索引 12 之间的火车分开,然后附加它。前面部分是从 0 到 1 的所有内容,第二部分是从 2 到结尾的所有内容。

幸运的是,python 有一个非常好的切片语法: x[i:j] 表示切片从 i (含)到 j (不包括)。 x[:j] means slice from the front till j and x[i:] means slice from i till the end.

所以我们可以做

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

原文由 marisbest2 发布,翻译遵循 CC BY-SA 3.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]

原文由 Kelly Bundy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题