撤消列表但不同时撤消列表

时间:2016-06-25 09:01:23

标签: python

def fun1(input):    
    input.reverse()       
    return input

这适用于fun1([1,2,3])

但是当我想做这样的事情时

input = [p,q,r]
print fun1(input)
print input

对于上述两个语句的输出都是[r,q,p],但我希望它保持[p,q,r]

enter image description here

2 个答案:

答案 0 :(得分:1)

使用input作为名称会影响内置input函数,因此这不是一个好主意。

为了保持input_不变,您可以修改它的副本,而不是直接修改它:

def fun1(input_):

      input_copy = input_[:] # A copy of input via slicing
      input_copy.reverse()
      return input_copy # return the mutated copy of your input

您还可以使用显式copy函数制作浅表副本:

input_copy = input_.copy()

您的input_不会被修改,副本上的更改也不会传播到原始input_

答案 1 :(得分:0)

为反转列表分配新的局部变量并将其返回:

def fun1(input):
    output = input[:]
return output.reverse()