通过 for 循环添加重复元素
Duplicate element being added through for loop
NOTE: I do not want to use del
I am trying to understand algorithms better which is why I want to avoid the built-in del
statement.
我正在填充一个包含 10 个随机生成的数字的列表。然后我尝试使用 for
循环按索引从列表中删除一个项目:
if remove_index < lst_size:
for value in range(remove_index, lst_size-1):
lst[value] = lst[value+1]
lst_size -= 1
一切正常,除了循环将最后一项添加两次。意思是,如果第 8 项的值为 4,它将添加第 9 项,其值也为 4。我不确定为什么要这样做。我仍然能够移动所选索引处的值(同时将所有内容向上移动),但它会添加重复项。
没有任何内容被添加到您的列表中。它从 lst_size
个元素开始,并且由于您没有删除任何元素,因此在您完成时它会保留相同的数字。
如果您将 remove_index
中的所有项目复制到列表中的上一个索引后,您想要删除最后一个项目,那么您可以使用 del
或 lst.pop()
.
冒着听起来轻率的风险,这是一条通用规则:如果你想做某事,你就必须去做。说 "I don't want to use del
" 不会改变这个事实。
仅仅递减 lst_size
不会对列表产生影响 - 虽然您可能会使用它来存储列表的大小,但它们没有关联,并且更改一个不会对另一个产生影响。
NOTE: I do not want to use
del
I am trying to understand algorithms better which is why I want to avoid the built-in
del
statement.
我正在填充一个包含 10 个随机生成的数字的列表。然后我尝试使用 for
循环按索引从列表中删除一个项目:
if remove_index < lst_size:
for value in range(remove_index, lst_size-1):
lst[value] = lst[value+1]
lst_size -= 1
一切正常,除了循环将最后一项添加两次。意思是,如果第 8 项的值为 4,它将添加第 9 项,其值也为 4。我不确定为什么要这样做。我仍然能够移动所选索引处的值(同时将所有内容向上移动),但它会添加重复项。
没有任何内容被添加到您的列表中。它从 lst_size
个元素开始,并且由于您没有删除任何元素,因此在您完成时它会保留相同的数字。
如果您将 remove_index
中的所有项目复制到列表中的上一个索引后,您想要删除最后一个项目,那么您可以使用 del
或 lst.pop()
.
冒着听起来轻率的风险,这是一条通用规则:如果你想做某事,你就必须去做。说 "I don't want to use del
" 不会改变这个事实。
仅仅递减 lst_size
不会对列表产生影响 - 虽然您可能会使用它来存储列表的大小,但它们没有关联,并且更改一个不会对另一个产生影响。