python - 两个相反的迭代器,列表分配索引范围错误

标签 python list while-loop iterator

此代码应该反转 my_list 中的前 number 项,同时保持列表的其余部分保持原始顺序。

list_copy = []
i = 0
j = number - 1
while i < number or j >= 0:
    list_copy[i] = my_list[j]
    i += 1
    j -= 1

for i in range(number,length(my_list)):
    list_copy[i] = my_list[i]

我使用笔和纸来运行迭代,但无法弄清楚为什么我收到“列表分配索引超出范围”。我错过了什么?

最佳答案

list_copy = my_list[0:NUMBER-1]

- 将前 NUMBER 个元素从 my_list 复制到 list_copy

my_list = my_list[NUMBER-1:]

- 从 my_list 中删除前 NUMBER 个元素

更新,不切片:

list_copy = []
j = number - 1
while j >= 0:
    list_copy.append(my_list[j])
    del my_list[j] # if you need remove elements from original list
    j -= 1

你确实有“索引超出范围”,因为Python解释器尝试从空列表中获取list_copy[i]。只需使用 list_copy.append() 来填充空列表。

关于python - 两个相反的迭代器,列表分配索引范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53359797/

相关文章:

python - Python 3.5.1 中的循环问题

python - 为什么我不能在 Python 中 pickle 错误的 Traceback?

python - 如何在Python中基于另一个数据框更改整个数据框值

python - wsgi 与 python3.4 和 python2.7

list - 仅展平 Prolog 中的一个列表级别

c++ - 循环无限时的输入验证

c++ - 为什么插入到堆中比插入到未排序的列表中更快?

python - 如何按字符串的最后一个字符对列表进行排序

mysql - 排除下拉列表中的状态

c - 牛顿收敛法不起作用