Python 如何在.txt文件中找到最大值?

Python 如何在.txt文件中找到最大值?,python,file,Python,File,我发这个是因为我被一个代码绊住了,我花了一整天的时间试图得到它 这是一个python程序,它读取一个包含大量浮点值(1亿+)的.txt文件,并从中获取最高值和最低值 我遇到了很多问题,第一个问题是我无法将字符串转换为浮点值来比较值 新代码不显示值 一些细节: 这些行有多个值,我尝试使用split来获取它们 所有的数字都是浮点数 代码如下: with open('gmm_data.txt') as f: array = [] minim = 99999999999999

我发这个是因为我被一个代码绊住了,我花了一整天的时间试图得到它

这是一个python程序,它读取一个包含大量浮点值(1亿+)的.txt文件,并从中获取最高值和最低值

我遇到了很多问题,第一个问题是我无法将字符串转换为浮点值来比较值

新代码不显示值

一些细节:

  • 这些行有多个值,我尝试使用split来获取它们
  • 所有的数字都是浮点数
代码如下:

with open('gmm_data.txt') as f:
    array = []
    minim = 99999999999999
    maxim = -99999999999999
    for line in f: # read rest of lines
        array.append([float(x) for x in line.split()])
    if(array[0] > maxim):
        maxim = array[0]
    elif(array[0] < minim):
        minim = array[0]

print (maxim)
print (minim)
以open('gmm_data.txt')作为f的
:
数组=[]
最小值=9999999999
最大值=-9999999999
对于f中的行:#读取其余行
array.append([float(x)表示x在line.split()中)
如果(数组[0]>最大值):
最大值=数组[0]
elif(数组[0]<最小值):
最小值=数组[0]
打印(maxim)
打印(最小)

在比较步骤中,您似乎希望访问数组的最后一个元素(因为这是新值添加的地方;这是在Python中通过
数组[-1]实现的)。
在比较步骤中,您似乎希望访问数组的最后一个元素(因为这是新值被
append
ed的地方;这是用
array[-1]
在Python中实现的,看起来在比较步骤中,您希望访问数组的最后一个元素(因为这是新值被
append
ed的地方;这是用
array[-1]在Python中实现的。)

在比较步骤中,您似乎希望访问数组的最后一个元素(因为这是新值的
append
ed;这是在Python中通过
array[-1]实现的)

您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值

相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换

要进行初始化,您可以将最大值初始化为
浮点('-inf')
-

with open('gmm_data.txt') as f:
    maxf = float('-inf')
    minf = float('inf')
    for line in f: # read rest of lines
        if line.strip():
            arr = [float(x) for x in line.split()])
            maxa = max(arr)
            mina = min(arr)
            if maxa > maxf:
                maxf = maxa
            if mina < minf:
                minf = mina
以open('gmm_data.txt')作为f的
:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值

相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换

要进行初始化,您可以将最大值初始化为
浮点('-inf')
-

with open('gmm_data.txt') as f:
    maxf = float('-inf')
    minf = float('inf')
    for line in f: # read rest of lines
        if line.strip():
            arr = [float(x) for x in line.split()])
            maxa = max(arr)
            mina = min(arr)
            if maxa > maxf:
                maxf = maxa
            if mina < minf:
                minf = mina
以open('gmm_data.txt')作为f的
:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值

相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换

要进行初始化,您可以将最大值初始化为
浮点('-inf')
-

with open('gmm_data.txt') as f:
    maxf = float('-inf')
    minf = float('inf')
    for line in f: # read rest of lines
        if line.strip():
            arr = [float(x) for x in line.split()])
            maxa = max(arr)
            mina = min(arr)
            if maxa > maxf:
                maxf = maxa
            if mina < minf:
                minf = mina
以open('gmm_data.txt')作为f的
:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值

相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换

要进行初始化,您可以将最大值初始化为
浮点('-inf')
-

with open('gmm_data.txt') as f:
    maxf = float('-inf')
    minf = float('inf')
    for line in f: # read rest of lines
        if line.strip():
            arr = [float(x) for x in line.split()])
            maxa = max(arr)
            mina = min(arr)
            if maxa > maxf:
                maxf = maxa
            if mina < minf:
                minf = mina
以open('gmm_data.txt')作为f的
:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
这里有一个很好的清洁方法:

def min_and_max(iterable):
    iterator = iter(iterable)

    # Assumes at least two items in iterator
    minim, maxim = sorted((next(iterator), next(iterator)))

    for item in iterator:
        if item < minim:
            minim = item
        elif item > maxim:
            maxim = item

    return (minim, maxim)


with open('gmm_data.txt', 'r') as f:
    values = (float(value_str) for line in f for value_str in line.split())
    minim, maxim = min_and_max(values)

print(maxim)
print(minim)
def最小值和最大值(iterable):
迭代器=iter(iterable)
#假设迭代器中至少有两个项
最小值,最大值=排序((下一个(迭代器),下一个(i