python - 为什么在列表中使用 x 并更改 x 的值在 Python 中不起作用
问题描述
假设我有一个列表 nums = [1,3,2,5,6] 并且我想将每个元素的值减去 1。现在我编写了如下代码
for i in nums:
i -= 1
但是,当我打印 nums 时,它的值没有改变。我想知道为什么它不起作用,以及 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]
推荐阅读
- swift - 是否可以在 Swift 的 if 条件中使用字符串变量?
- arrays - 减少值相等的数组
- python - 如何使用 for 循环一一“填充”子图?
- c# - sql to Linq union 是通过引用吗?(除了和相交一样吗?)
- mysql - 关于 UUID 数据类型作为主键
- laravel - 使用 Gitlab Runner 设置 Laravel 环境
- javascript - 在 adobe analytics 中将动态值推送到 digitalData 层
- angular - 从 api 调用动态创建角度反应形式的复选框
- android - 应用数据的改变路径
- android - 子 webview 从父 webview 启动一次后出现键盘问题