Python 在运行looop后,将垃圾值分配给列表的元素
以下是代码的一部分:Python 在运行looop后,将垃圾值分配给列表的元素,python,list,xlrd,Python,List,Xlrd,以下是代码的一部分: 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
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.0
。qsx
中的所有单元格值大致相同,即8.6609
问题是在这里引起的x=[[float(0)]*imx]*jmx
。似乎列表中的所有列表都不是不同的,而是相同列表的引用。尝试以这种方式更改x
初始化,我认为它应该可以工作:
更新:我已经更改了循环的I和j的顺序
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)]
问题是在这里引起的
x=[[float(0)]*imx]*jmx
。似乎列表中的所有列表都不是不同的,而是相同列表的引用。尝试以这种方式更改x
初始化,我认为它应该可以工作:
更新:我已经更改了循环的I和j的顺序
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)]
您的问题到底是什么,错误在哪里,或者您希望实现什么,但不起作用?就我所见,
x[0][0]
的值不是它应该的值?或者你的问题是什么?你也可以将你的代码重新格式化为代码块而不是代码行。下面是StackOverflow降价的例子:)您的问题到底是什么,错误在哪里,或者您希望实现什么,但不起作用?就我所见,x[0][0]
的值不是它应该的值?或者你的问题是什么?你也可以将你的代码重新格式化为代码块而不是代码行。下面是StackOverflow降价的示例:)