Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在运行looop后,将垃圾值分配给列表的元素_Python_List_Xlrd - Fatal编程技术网

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降价的示例:)