python - 列表:改变价值观,这里到底发生了什么?
问题描述
我在 python 中有一个简单的二维列表。我通过逐行读取文本文件并使用 .split() 方法将其分割、转换为浮点数来创建它,一切看起来都很好。我立即按索引打印列表,看起来不错。我第二次这样做,突然它只包含原始列表的最后一个索引中的内容。除了 split() 和 float 赋值外,我从顶部循环复制了代码以创建第二个循环:
dataLinesStr = ["1 2 3 4 5", "6 7 8 9 10", "11 12 13 14 15", "16 17 18 19 20", "21 22 23 24 25"]
numLines = len(dataLinesStr)
numPix = 5
lineData = [[0.0] * numPix] * numLines # Refer as: lineData[numLines][numPix]
r = 0
while r < numLines:
tmpStr = dataLinesStr[r].split() # a list of strings.
p = 0
while p < numPix:
lineData[r][p] = float(tmpStr[p])
if r < 3: print("[" + str(r) + "][" + str(p) + "]lineData = ", lineData[r][p])
p += 1
r += 1
print("2nd time....")
r = 0
while r < numLines:
p = 0
while p < numPix:
if r < 3: print("[" + str(r) + "][" + str(p) + "]lineData = ", lineData[r][p])
p += 1
r += 1
输出是:
[0][0]lineData = 1.0
[0][1]lineData = 2.0
[0][2]lineData = 3.0
[0][3]lineData = 4.0
[0][4]lineData = 5.0
[1][0]lineData = 6.0
[1][1]lineData = 7.0
[1][2]lineData = 8.0
[1][3]lineData = 9.0
[1][4]lineData = 10.0
[2][0]lineData = 11.0
[2][1]lineData = 12.0
[2][2]lineData = 13.0
[2][3]lineData = 14.0
[2][4]lineData = 15.0
2nd time....
[0][0]lineData = 21.0
[0][1]lineData = 22.0
[0][2]lineData = 23.0
[0][3]lineData = 24.0
[0][4]lineData = 25.0
[1][0]lineData = 21.0
[1][1]lineData = 22.0
[1][2]lineData = 23.0
[1][3]lineData = 24.0
[1][4]lineData = 25.0
[2][0]lineData = 21.0
[2][1]lineData = 22.0
[2][2]lineData = 23.0
[2][3]lineData = 24.0
[2][4]lineData = 25.0
两个循环之间没有变量操作,但只有原始列表中的最后一个元素出现在第二个循环中。我一直在为这件事发疯。我看不出发生这种情况的可变与非可变原因。有人看到这里有什么问题吗?
解决方案
推荐阅读
- c# - 如何在特定条件下使用 Linq 选择特定列
- php - 在多对多关系中使用 Symfony 和 Doctrine 进行搜索
- python - 如何检查输入是否在数组中并打印另一个数组的相应元素?
- konvajs - 如何将 id 添加到 konvajs 节点?
- tensorflow - tensorflow 到 tflite - 从 .pb 转换为 .tflite 时,tflite_converted 失败并显示“轴 0 计算为 0 的 StridedSlice”
- c++ - 转换和打印进程的模块名称
- r - 如何在匹配特定条件的数据框中找到最小值并返回特定列
- ios - 配置文件安装失败:SCEP 服务器返回无效响应(在修改配置文件时发生)
- go - 我使用 pprof 进行的 golang 程序分析显示内存在 std/json 包中的 json (* decodeState) objectInterface 处增加
- javascript - 如何在 React 中使用由 Stenciljs 创建的嵌套 Web 组件