首页 > 解决方案 > 更改定义数组的元素后变量会发生变化吗?

问题描述

我无法理解这张照片中发生了什么。我定义了一个变量 temp ,它在我更改我定义它的数组后自行更改。这根本不是我认为的工作方式。

如果重要的话,我正在使用 Python 3.6.1。

情况

标签: pythonpython-3.xnumpy

解决方案


numpy 数组不像 Python 列表。数组是一个单一的对象,当你索引它时,你会得到引用数组部分的切片。这些行不是独立的对象,它们只是数组的视图。

所以 的值temp是对数组第一行的引用。分配给matrika[0]修改数组。这类似于使用常规列表进行切片分配,例如

matrika = [[1, 2, 3], [4, 5, 6], [5, 5, 5], [53, 1, 2]]
temp = matrika[0]
matrika[0][:] = matrika[1]
print(temp)

推荐阅读