Python 将文件读入数组,值错误
Python read file into array, wrong value
以下是代码,我试图逐行读取文件并将值相应地写入数组,但是,当我打印 sensing 时,它确实包含一个很多元素,但它们的值是最后 trimmed。
sensing = []
with open("data.txt") as data:
for line in data:
strline = line.strip()
if(strline[1] =='[' ):
trimmed[0] = int(strline[2:5])
trimmed[1] = int(strline[7:10])
else:
trimmed[0] = int(strline[1:4])
trimmed[1] = int(strline[6:9])
**sensing.append(trimmed)**
data.txt: [592, 180],[583, 189],[576, 197],[569, 205],[560, 214],[551, 225],
感应:[[551, 225], [551, 225], [551, 225], [551, 225], [551, 225], [551, 225]]
我想要的:传感:[[592, 180],[583, 189],[576, 197],[569, 205],[560, 214],[551, 225]]
这里的问题几乎可以肯定是与引用有关。 Python 中的列表(和大多数对象)保存在引用变量中。感知中的每个列表都指向内存中的一个列表,您称之为修剪。当您更改 trimmed 时,感应中的所有子列表都会更新,因为它们都指向那个列表。
您需要通过循环重新定义修剪的每个迭代(使用 trimmed = [None, None]
),或者您可以使用 sensing[-1].append(element)
和 sensing.append([])
之类的内容直接附加到传感列表添加新列表。
假设一行输入为:[592, 180],[583, 189],[576, 197],[569, 205],[560, 214],[551, 225]
sensing = []
with open("data.txt") as data:
for line in data:
sendsing = [map(int, i.split(", ")) for i in line.strip()[1:-1].split("],[")]
以下是代码,我试图逐行读取文件并将值相应地写入数组,但是,当我打印 sensing 时,它确实包含一个很多元素,但它们的值是最后 trimmed。
sensing = []
with open("data.txt") as data:
for line in data:
strline = line.strip()
if(strline[1] =='[' ):
trimmed[0] = int(strline[2:5])
trimmed[1] = int(strline[7:10])
else:
trimmed[0] = int(strline[1:4])
trimmed[1] = int(strline[6:9])
**sensing.append(trimmed)**
data.txt: [592, 180],[583, 189],[576, 197],[569, 205],[560, 214],[551, 225],
感应:[[551, 225], [551, 225], [551, 225], [551, 225], [551, 225], [551, 225]]
我想要的:传感:[[592, 180],[583, 189],[576, 197],[569, 205],[560, 214],[551, 225]]
这里的问题几乎可以肯定是与引用有关。 Python 中的列表(和大多数对象)保存在引用变量中。感知中的每个列表都指向内存中的一个列表,您称之为修剪。当您更改 trimmed 时,感应中的所有子列表都会更新,因为它们都指向那个列表。
您需要通过循环重新定义修剪的每个迭代(使用 trimmed = [None, None]
),或者您可以使用 sensing[-1].append(element)
和 sensing.append([])
之类的内容直接附加到传感列表添加新列表。
假设一行输入为:[592, 180],[583, 189],[576, 197],[569, 205],[560, 214],[551, 225]
sensing = []
with open("data.txt") as data:
for line in data:
sendsing = [map(int, i.split(", ")) for i in line.strip()[1:-1].split("],[")]