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

时间:2018-11-18 10:19:53

标签: python list while-loop iterator

该代码应该颠倒number中的前my_list个项目,同时使列表的其余部分保持其原始顺序。

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]

我用笔和纸来运行迭代,无法弄清为什么我得到“列表分配索引超出范围”。我想念什么?

1 个答案:

答案 0 :(得分:1)

list_copy = my_list[0:NUMBER-1]

-将my_list中的前NUMBER个元素复制到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()填充空白列表即可。