我知道列表赋值不起作用,因为它是一个空列表,但我不知道如何解决这个特定的问题。任何帮助都将不胜感激。收到的错误是new_list[insert_position] = value列表分配索引超出范围。除了主要的其他部分之外,一切都可以正常工作。注意--这个特定的任务要求我不要使用除append()之外的字符串/列表方法
def insert_value(my_list, value, insert_position):
new_list = []
if insert_position <= 0:
new_list.append(value)
for i in my_list:
new_list.append(i)
elif insert_position >= length(my_list):
for i in my_list:
new_list.append(i)
new_list.append(value)
else:
index = []
for i in range(length(new_list)):
if i != insert_position:
index.append(i)
new_list[insert_position] = value
for i in index:
if i < insert_position:
new_list[i] = my_list[i]
else:
new_list[i] = my_list[i - 1]
return new_list
print("\ninsert_value Test")
str_list3 = ['one','three','four', 'five', 'six']
new_list = list_function.insert_value(str_list3, 'two', 1)发布于 2017-05-24 23:26:09
new_list[insert_position] = value此时,new_list仍然为空,因此不能在(随机)索引处赋值。如果您的说明告诉您应该只使用append,那么您就应该这么做。
这应该是你解决第三种情况的策略:
n,则列表的新长度将为n + 1,因为您正在插入一个元素。您也可以只使用原始列表的当前索引进行迭代,这样就不需要调整其余项的索引。
加分:如果操作正确,就不再需要显式处理insert_position == 0和insert_position == len(my_list)的情况。
发布于 2017-05-24 23:24:25
elif insert_position >= length(my_list):将其更改为:
elif insert_position > length(my_list)-1:如果你的列表有4个条目,那么长度是4,最后一个索引是3,所以你需要检查索引是否大于长度-1。
发布于 2017-05-24 23:29:36
问题是,您检查了my_list的长度并将值插入到new_list,新列表为空,但您向索引1插入了一个值。您可以做的是深入复制my_list并修改新列表
import copy然后用new_list = copy.deepcopy(my_list)替换new_list=[]
则new_list结果将为
['one', 'two', 'three', 'four', 'five']https://stackoverflow.com/questions/44162501
复制相似问题