我实质上是在尝试insert()
为作业分配重新创建该功能的版本。我编写了以下函数:
def insert_value(my_list, value, insert_position):
list_copy = []
if insert_position < 0:
insert_position = 0
if insert_position >= len(my_list):
insert_position = len(my_list) - 1
i = 0
while i < len(my_list) + 1:
while i < insert_position:
list_copy.append(my_list[i])
i += 1
while i == insert_position:
list_copy.append(value)
i += 1
while i > insert_position:
list_copy.append(my_list[i-1])
i += 1
return list_copy
我list index out of range
在最后一个while子循环中收到错误,但我无法弄清原因。while循环考虑了新的列表长度(while i < len(my_list) + 1
)。我想念什么?
您的问题是因为您正在使用嵌套的while循环,这些循环在条件为false之前不会退出。因此,在所有嵌套的while循环完成之前,外部的while循环检查i
的长度my_list
不会小于其长度(从来没有这样做)。具体来说,我认为问题在于此处的最后一个while循环:
while i > insert_position:
list_copy.append(my_list[i-1])
i += 1
while循环不会结束,因为i
它将始终大于,insert_position
并且最终i
值将超出的长度my_list
。
如果您更改代码逻辑以if
在while循环内使用语句,那么我认为这会更好,然后您只需i
在末尾增加一次即可:
i = 0
while i < len(my_list) + 1:
if i < insert_position:
list_copy.append(my_list[i])
elif i == insert_position:
list_copy.append(value)
else:
list_copy.append(my_list[i-1])
i += 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句