当调用listPts[0]时,我试图读取一个包含x,y值对的文件,例如556.3 439.1。然而,当我试图得到k,listPts中的最小y值时,我得到了以下错误。你知道吗
builtins.ValueError: '5' is not in list
“5”是指什么?我只想打印一个y值,比如439.1。你知道吗
def main():
listPts = readDataPts('Set_A.dat', 2000)
k = listPts.index(min(listPts, key=operator.itemgetter(1))[0])
print(k)
所以发生的事情是
listPts.index(x)
返回索引x
处listPts
的值。你知道吗出现错误是因为您试图获取
listPts.index('5')
。一、 你试图用一个字符串来获取索引。而且由于它只得到'5'
而不是'556.3'
,我想您的readDataPts
没有返回正确的数据。你知道吗对于如下文件:
您可以编写如下相应的代码:
这段代码正确地解析文件(将字符串数字转换为浮点),并返回最小的
y
值。您会注意到根本不需要index
方法,而且由于min
返回最小的[x,y]
对,因此您还希望最小值的索引是1
,而不是0
。你知道吗如果您的文件非常大(太大,无法进入内存),可以使用生成器直接向
min
生成行,这样可以避免读取整个文件:相关问题 更多 >
编程相关推荐