gpt4 book ai didi

python - 运行循环后将垃圾值分配给列表的元素

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:34 27 4
gpt4 key购买 nike

这是代码的一部分:

import xlrd as xd

import numpy as n

gx = 'dx.xls'

gy = 'dy.xls'

qx = xd.open_workbook(gx)

qy = xd.open_workbook(gy)

qxs = qx.sheet_by_index(0)

qys = qy.sheet_by_index(0)

imx = qxs.nrows

jmx = qys.ncols

pi = round(n.pi , 10)

Tad = pi*.5

x = [[float(0)]*imx]*jmx

for i in range(1,jmx):

x[i][0] = x[i-1][0]+qxs.cell_value(0,i-1)

并且x[0][0]的值变为945.6。

所有单元格中的qsx单元格数据几乎保持不变,均为 8.6609。请帮助我并告诉我我哪里做错了。

编辑:

我正在尝试读取 .xls 文件并使用其包含长度差异 (dx) 的单元格值来获取每个索引处的 x 坐标,我为其运行了环形。当我将列表定义为 x 并启动为 x = [[float(0)]*imx]*jmx 时。运行代码后,没有显示错误,但列表 x[0][0] 中的元素被分配了固定值 945.6。这是不应该发生的,因为我从 i=1 运行循环,因此从 x[1][0]x[0][0 开始评估] 应保留 0.0qsx 中的所有单元格值大致相同,即 8.6609

最佳答案

问题是由这里x = [[float(0)]*imx]*jmx引起的。似乎列表中的所有列表都没有不同,而是同一列表的引用。尝试以这种方式更改 x 初始化,我认为它应该有效:

更新:我更改了 i 和 j for 循环的顺序。

x = []
for j in range(jmx):
x.append([])
for i in range(imx):
x[j].append(float(0))

您还可以使用以下语法:

x = [[0.0 for i in range(imx)] for j in range(jmx)]

关于python - 运行循环后将垃圾值分配给列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59981183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com