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

时间:2016-03-16 08:16:19

标签: python list python-3.x indexing sequences

我想编写一个函数,将列表中所有元素的位置向后移动(向左)。唯一的条件是该函数不应该改变原始列表,并且它必须不返回任何内容。从本质上讲,我如何从我在这里创建的代码中获取:

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

...将每个元素向后移动一个位置,但是将原始列表变为一个同样的东西,但却没有改变原始列表?

2 个答案:

答案 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?