本人是名学生,希望请教如何改变在function中的input_list, mutate the list.
def cycle(input_list):
input_list=input_list.copy()
first_num=input_list[0]
input_list=input_list[1:]
input_list.append(first_num)
return input_list
#望在terminal 中希望得到的效果
>>> l = [1, 2, 4, 5, 'd']
>>> cycle(l)
>>> l
[2, 4, 5, 'd', 1]
>>> cycle(l)
>>> l
[4, 5, 'd', 1, 2]
#而实际得到的效果
>>> l = [1, 2, 4, 5, 'd']
>>> cycle(l)
>>> l
[1, 2, 4, 5, 'd']
>>> cycle(l)
>>> l
[1, 2, 4, 5, 'd']
现在这个方程无法全局改变 list 的内容,望请教究竟是哪里错了,有什么更好的方法。谢谢。
3楼 @tinyfool 您好,谢谢您的答复。这是题目的原题: 因为不是已知list的名称,而是随机出现一个在Terminal 中 Write a function cycle(inputlist) that performs an "in-place" cycling of the elements of a list, moving each element one position earlier in the list. Here "in place" means the operation should be performed by mutating the original list, and your function should not return anything. Note that you may assume that inputlist is non-empty (i.e. contains at least one element)
For example:
>>> l = [1, 2, 4, 5, 'd']
>>> cycle(l)
>>> l
[2, 4, 5, 'd', 1]
>>> cycle(l)
>>> l
[4, 5, 'd', 1, 2]
之前上面的是本人的照题目写的代码,无法完成题目要求: 下面这个是本人一位同学mutate成功的代码情况:
def cycle(input_list):
input_list = input_list.copy()
tmp = input_list[0]
for i in range(0, len(input_list)-1):
input_list[i] = input_list[i+1]
input_list[-1] = tmp
return input_list
希望请教两者代码之间为何一个可以mutate成功,另外一个无法。决定于一个list中的值是否在方程中被改变的主要因素为何? 谢谢。