首页 > 解决方案 > 列表值在传递给函数后发生变化

问题描述

这个想法是为列表“a”设置静态值,但是一旦该列表通过函数的操作,它的内容似乎会发生变化。

a = [1, 3, 5]
u = []

def f(a1, num):
    x = []
    n = len(a1)
    for i in range(n):
        a1[i] = a1[i] + num
        x.append(0)
    for i in range(n):
        x[i] = x[i] + a1[i]
    #a1 = a2
    return x

u = f(a, 10)
print "u = ", u 
print "a = " ,a 

u = f(a, 100)
print "u = ", u 
print "a = " ,a 

输出是:

u =  [11, 13, 15] 
a =  [11, 13, 15]  
u =  [111, 113, 115]  
a =  [111, 113, 115]  

我一直在尝试创建列表的副本并希望保留原始值,但仍然没有。

任何想法都非常感谢:)

标签: pythonpython-2.7

解决方案


您是否尝试过像这样复制列表?

u = f(a[:], 10)

或者,x[i]总是从零开始,所以我认为你可以简化

def f(a1, num):
    return [a + num for a in a1] 

推荐阅读