此代码应该反转 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/