首页 > 解决方案 > 为什么在列表中使用 x 并更改 x 的值在 Python 中不起作用

问题描述

假设我有一个列表 nums = [1,3,2,5,6] 并且我想将每个元素的值减去 1。现在我编写了如下代码

for i in nums:
    i -= 1

但是,当我打印 nums 时,它的值没有改变。我想知道为什么它不起作用,以及 Python 中是否有一种优雅的方式来做到这一点。谢谢!

标签: python

解决方案


i是一个局部变量,不反映 中的实际对象nums,只反映它们的值。最好的方法是使用列表推导:

nums = [i - 1 for i in nums]

如果您需要保留对以下内容的引用nums

nums[:] = = [i - 1 for i in nums]

演示:

>>> nums = [1, 2, 3]
>>> [i - 1 for i in nums]
[0, 1, 2]

推荐阅读