def insert(lst, idx, elem):
lst = lst[:idx] + [elem] + lst[idx:]
list1 = [0, 1, 2, 3, 4, 6, 7]
insert(list1, 5, 5)
list2 = ['0', '1', '0']
insert(list2, 0, '1')
for example, list1 should be [0, 1, 2, 3, 4, 5, 6, 7]
for example, list2 should be ['1', '0', '1', '0']
Edit: for example, insert([1, 2, 3], 1, 0) should be None
我的代码出了什么问题?什么应该是正确的答案?
I have been getting:
list1 [0, 1, 2, 3, 4, 6, 7]
list2 ['0', '1', '0']
答案 0 :(得分:0)
您应该返回lst
:
def insert(lst, idx, elem):
lst = lst[:idx] + [elem] + lst[idx:]
return lst
list1 = [0, 1, 2, 3, 4, 6, 7]
x = insert(list1, 5, 5)
list2 = ['0', '1', '0']
y = insert(list2, 0, '1')
print(x)
print(y)
结果:
[0, 1, 2, 3, 4, 5, 6, 7]
['1', '0', '1', '0']
答案 1 :(得分:0)
嗨,我假设这个问题希望您就地修改列表。
当您使用切片时,实际上会创建新的副本,而不是就地修改列表。因此,当您尝试调用 insert()
和 print(x)
时,您将得到 [0, 1, 2, 3, 4, 6, 7]
您可以做的是使用 [:]
--> lst[:] = lst[:idx] + [elem] + lst[idx:]
您不需要返回 lst
,因为测试用例实际上是在测试 lst 是否是原始数组。