将列表中的元素向后移动一个位置而不改变原始列表

Move elements in a list one position backward without mutating the original list

我想编写一个函数,将列表中所有元素的位置向后(向左)移动一个位置。唯一的条件是函数不应该改变原始列表,并且它必须 return 什么都没有。本质上,我如何从我在此处创建的代码开始:

def cycle(input_list):
   move = input_list
   move.append(move.pop(0))

...将每个元素向后移动一个位置但将原始列表变异为执行相同操作但不改变原始列表的元素?

您需要复制输入列表,修改 return 循环函数的值,即像这样:

  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 中的复制列表有很好的 post:How to clone or copy a list?

那么简单的任务,return 元素移位的副本:

def cycle(input_list):
    return input_list[1:] + input_list[:1]