python - 掌握就地操作的基础知识

标签 python python-3.3

所以...

a = [2,3,4,5]

for x in a:
  x += 1

a = [2,3,4,5]

纳达。

但是如果我...

a[2] += 1
a = [2,3,5,5]

显然我的头脑无法理解这些基础知识。 print(x) 仅返回单元格内的整数,因此它应该为每个列表单元格自动添加一个整数。解决方案是什么,我没有掌握什么?

最佳答案

在这种情况下,您正在定义一个新变量 x,它依次引用 a 的每个元素。您不能修改 x 引用的 int,因为 int 在 Python 中是不可变的。当您使用 += 运算符时,会创建一个新的 int 并且 x 引用这个新的 int,而不是比 a 中的那个。如果您创建了一个包含 intclass,那么您可以按原样使用循环,因为此类的实例是可变的。 (这不是必需的,因为 Python 提供了更好的方法来做你想做的事)

for x in a:
  x += 1

你想要做的是基于a生成一个新列表,并可能将其存储回a。

a = [x + 1 for x in a]

关于python - 掌握就地操作的基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958543/

相关文章:

python - 如何根据另一个列表对列表进行排序? Python

python - Python 3.3 中的哈希函数在 session 之间返回不同的结果

python - Matplotlibrc 需要更新吗?

python - 使用python opencv播放视频文件

python - 如何用 dict ["key"中的值替换字符串中标有 {key} 的关键字]

python - 使用 pip 在 Python 3.3 上安装 ckanclient 时出错

python - 01 无效 token

python - Pygame,屏幕仅在退出pygame窗口时更新?

python - sqlite 不保存小数,但在 MySQL 中工作正常

python - 单链表删除