python列表生成式的问题

a = ['1','2','3','4','5','6','7','8','9','10']
def douple(x):
    x = [int(i) *2 for i in x]
    print(x)

douple(a)
print(a)

显示结果

clipboard.png

为啥a还是原来的值呢, 方法不是已经把a变了么?
谢谢

阅读 2.9k
3 个回答
a = ['1','2','3','4','5','6','7','8','9','10']
def douple(x):
    x[:] = [int(i) *2 for i in x] # x -> x[:]
    print(x)

douple(a)
print(a)

这样就能达到你的要求了

新手上路,请多包涵

Python中传递参数时,传递的是对象引用,如果对象是列表的话,可以通过赋值对列表的某一个元素进行修改,但是直接赋值不会修改原列表。

楼上解释的挺清楚了,换个简单的方法~

a = ['1','2','3','4','5','6','7','8','9','10']
a = map(lambda x: int(x) * 2, a)
#a[:] = map(lambda x: int(x) * 2, a)
print(a)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题