数组的最大值

2024-10-08 18:27:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想找出数组的最大值。我在运行代码时遇到了以下索引错误。你知道吗

if line[i] <= line[i + 1] and currentMaximum[0] <= line[i + 1]:
IndexError: list index out of range

如有任何建议或帮助,将不胜感激。你知道吗

with open('C:/Users/Obama/Documents/Scripts/sums.txt', 'r') as f:

    currentMaximum = []
    i = 0
    for line in f:
        line = list(map(int, line.split()))
        if line[i] <= line[i + 1] and currentMaximum[0] <= line[i + 1]:
            currentMaximum[0] = line[i + 1]
        elif line[i] >= line[i + 1] and currentMaximum[0] <= line[i]:
            currentMaximum[0] = line[i]
        else:
            continue
        i += 1

Tags: andof代码indexif错误withline
3条回答

此代码将查找数组的最大值。至于数组的获取,我就交给你了。注意,使用变量maxi是因为max是关键字。你知道吗

num = []
# Put your numbers in the above array
maxi = 0

for i in num:
    if i > maxi:
        maxi = i
print(maxi)

修复代码中的错误将为您带来以下好处:

with open('C:/Users/Obama/Documents/Scripts/sums.txt', 'r') as f:

    currentMaximum = [0]
    for line in f:
        line = list(map(int, line.split()))
        i = 0
        while i < len(line) - 1:
            if line[i] <= line[i + 1] and currentMaximum[0] <= line[i + 1]:
                currentMaximum[0] = line[i + 1]
            elif line[i] >= line[i + 1] and currentMaximum[0] <= line[i]:
                currentMaximum[0] = line[i]
            i += 1
print currentMaximum[0]

currentMaximum[0]在进行第一次比较时需要有一个值,因此我首先用0初始化了它。如果您的数据可能都是负数,那么可以使用float("-inf")。另外,应该为每一行重置i,并确保i永远不会超过len(line) - 1。上面的代码应该运行正常。你知道吗

如果消除冗余,代码看起来会简单得多:

currentMaximum = 0

with open('C:/Users/Obama/Documents/Scripts/sums.txt', 'r') as f:
    for line in f:
        for number in list(map(int, line.split())):
            if currentMaximum < number:
                currentMaximum = number

print currentMaximum

或者使用max内置函数,结合列表理解和itertools标准库模块中的chain函数。你知道吗

from itertools import chain

with open('C:/Users/Obama/Documents/Scripts/sums.txt', 'r') as f:
    data = [[int(text) for text in line.split()] for line in f]
print max(chain(*data))    

为什么不使用内置的max函数?你知道吗

import numpy as np
arr = np.random.randn(100)
maximum = max(arr)

若您有多个列表,并且需要找到可以使用列表生成的所有列表中的最大值:

import numpy as np
arr = np.random.randn(100)
arr2d = arr.reshape(10,10)
maximum = max([max(line) for line in arr2d])

相关问题 更多 >

    热门问题