python - 列表赋值超出范围 - Python

标签 python

我知道列表分配不起作用,因为它是一个空列表,但我不知道如何解决这个特定问题。任何帮助将不胜感激。收到的错误是 new_list[insert_position] = value 列表分配索引超出范围。除了主要其他部分中的部分之外,一切正常。注意 - 这个特定任务要求我不使用除 append()

之外的字符串/列表方法
def insert_value(my_list, value, insert_position):
    new_list = []
    if insert_position <= 0:
        new_list.append(value)
        for i in my_list:
            new_list.append(i)
    elif insert_position >= length(my_list):
        for i in my_list:
            new_list.append(i)
        new_list.append(value)
    else:
        index = []
        for i in range(length(new_list)):
            if i != insert_position:
                index.append(i)
        new_list[insert_position] = value
        for i in index:
            if i < insert_position:
                new_list[i] = my_list[i]
            else:
                new_list[i] = my_list[i - 1]

    return new_list

print("\ninsert_value Test")
str_list3 = ['one','three','four', 'five', 'six']
new_list = list_function.insert_value(str_list3, 'two', 1)

最佳答案

new_list[insert_position] = value

在执行此操作时,new_list 仍为空,因此您无法在(随机)索引处进行分配。如果您的说明表明您应该只使用append,那么您应该这样做。

这应该是解决第三种情况的策略:

  1. 假设原始列表的长度为 n,由于您要插入一个元素,因此新列表的长度将为 n + 1
  2. 因此循环遍历 new 列表的所有索引 (0..n+1)。
  3. 只要当前索引仍然低于您要插入的索引,只需从原始列表中追加该项目即可。
  4. 如果您点击要插入的索引,请追加新项目。
  5. 对于原始列表中的所有剩余项目,只需追加它们即可。请注意,与原始列表相比,您的索引已前进了 1。

您也可以只使用原始列表的当前索引进行迭代,然后不需要调整其余项目的索引。

<小时/>

奖励积分:如果你做得正确,你不再需要显式处理 insert_position == 0insert_position == len(my_list) 情况。

关于python - 列表赋值超出范围 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44162501/

相关文章:

Python:使用已知字符制作暴力哈希检查器

python - django manage.py 设置默认

python - python KCL 连接到 kinesis 流时出现异常

python - 统计模型 ARIMA.fit : Hide output

python - 部分读取大型 numpy 文件的有效方法?

Python字符串范围(解析html)

python - 如何使用 Python tkinter 创建子窗口?

python - Python 类初始化中的意外结果

Python - 扭曲、代理和修改内容

python - 在python中如何跟踪一段代码是否在一个时间间隔内执行,如果没有则停止