TypeError: ' Float object not Iterable'
TypeError: ' Float object not Iterable'
我有
格式的数据记录文件
41, 3.68, 3.58, 3.71, 3.54, 3.68, 3.79
42, 3.69, 3.57, 3.73, 3.55, 3.67, 3.78
43, 3.68, 3.57, 3.73, 3.54, 3.68, 3.79
44, 3.68, 3.57, 3.73, 3.54, 3.67, 3.79
45, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
46, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
47, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
48, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
49, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
对于每一列,我都试图找到最小值和相应的行号。
但是使用下面的代码,min()
函数给出了'float object not iterable 错误。
with open("Datalog.txt", "r") as file:
result = [[float(x) for x in line.split(",")] for line in file]
for i in range (len(result[0])):
for j in range (len(result)):
print (result[j][i])
print (min(result[0][i]))
min 遍历参数中的 list/tuple 并为您提供其中的最小项,但您为其提供了一个浮点数,因此它试图遍历该浮点数。
绝对没有理由这样做,但这样做不会崩溃:
print (min(result[0][i],))
因为现在它不是浮点数,而是元组。它只会打印 result[0][i]
的值
如果你想要得到每一行的最小值,你必须这样做:
for i in range (len(result)):
print (min(result[i]))
如果你想要的是每列中的最小值(假设所有行的列数相同),你必须这样做:
for j in range(len(result[0]))
print ('minimum in column ' + str(j) + ':')
print (min([result[i][j] for i in range(len(result))]))
其中 j 是列的索引
错误是因为在
print (min(result[0][i]))
result[0][i]
是单个 float
对象,而不是您预期的列表。
相反,给 min
一个列表:
for j in range (len(result)):
print(result[j][0])
print(min(result[j][1:]))
范围 [1:]
表示除第一个元素之外的所有内容。
我有
格式的数据记录文件41, 3.68, 3.58, 3.71, 3.54, 3.68, 3.79
42, 3.69, 3.57, 3.73, 3.55, 3.67, 3.78
43, 3.68, 3.57, 3.73, 3.54, 3.68, 3.79
44, 3.68, 3.57, 3.73, 3.54, 3.67, 3.79
45, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
46, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
47, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
48, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
49, 3.68, 3.57, 3.73, 3.54, 3.67, 3.78
对于每一列,我都试图找到最小值和相应的行号。
但是使用下面的代码,min()
函数给出了'float object not iterable 错误。
with open("Datalog.txt", "r") as file:
result = [[float(x) for x in line.split(",")] for line in file]
for i in range (len(result[0])):
for j in range (len(result)):
print (result[j][i])
print (min(result[0][i]))
min 遍历参数中的 list/tuple 并为您提供其中的最小项,但您为其提供了一个浮点数,因此它试图遍历该浮点数。
绝对没有理由这样做,但这样做不会崩溃:
print (min(result[0][i],))
因为现在它不是浮点数,而是元组。它只会打印 result[0][i]
的值如果你想要得到每一行的最小值,你必须这样做:
for i in range (len(result)):
print (min(result[i]))
如果你想要的是每列中的最小值(假设所有行的列数相同),你必须这样做:
for j in range(len(result[0]))
print ('minimum in column ' + str(j) + ':')
print (min([result[i][j] for i in range(len(result))]))
其中 j 是列的索引
错误是因为在
print (min(result[0][i]))
result[0][i]
是单个 float
对象,而不是您预期的列表。
相反,给 min
一个列表:
for j in range (len(result)):
print(result[j][0])
print(min(result[j][1:]))
范围 [1:]
表示除第一个元素之外的所有内容。