我想编写一个函数,将列表中所有元素的位置向后移动(向左)。唯一的条件是该函数不应该改变原始列表,并且它必须不返回任何内容。从本质上讲,我如何从我在这里创建的代码中获取:
def cycle(input_list):
move = input_list
move.append(move.pop(0))
...将每个元素向后移动一个位置,但是将原始列表变为一个同样的东西,但却没有改变原始列表?
答案 0 :(得分:2)
轻松完成任务,返回一个副本,其中包含已移动的元素:
def cycle(input_list):
return input_list[1:] + input_list[:1]
答案 1 :(得分:0)
您需要复制输入列表,修改并从循环函数返回值,例如:
def cycle(input):
if len(input) > 1: # check for empty lists
res = list(input) # make actual copy of the list
res.append(res.pop(0))
return res
else:
return []
在Python中复制列表的帖子很好:How to clone or copy a list?