不使用 max() 方法的列表的最大值

问题描述 投票:0回答:10

我需要找到列表的最大值,但我无法使用 max() 方法。我该怎么做呢?我只是一个初学者,所以我确信这很容易找到解决方法,但是我很困惑。

编辑:忘记提及我正在使用Python。

python list max
10个回答
10
投票
max = list[0]
for x in list:
    if x > max:
        max = x
print max

在此示例中,我们将最大值初始化为第一个元素。然后我们迭代列表,如果发现比当前最大值更大的值,我们将该值分配给 max。最后,我们应该得到最大值,并打印出来。


7
投票

考虑一下如何手动执行此操作。

如果您有这样的列表:

[10, 6, 8, 2, 4, 12, 3]

要手动查找最大值,您可以从第一个数字 10 开始,这就是最大值。然后你移动到下一个数字,6:

 M
[10, 6, 8, 2, 4, 12, 3]
     ^

大于10吗?否,则移至下一个数字:

 M
[10, 6, 8, 2, 4, 12, 3]
        ^

 M
[10, 6, 8, 2, 4, 12, 3]
           ^
 M
[10, 6, 8, 2, 4, 12, 3]
              ^
 M
[10, 6, 8, 2, 4, 12, 3]
                 ^

现在我们遇到一个比最大值 10 大的数字。所以我们移动最大值点:

                 M
[10, 6, 8, 2, 4, 12, 3]
                 ^

然后继续:

                 M
[10, 6, 8, 2, 4, 12, 3]
                     ^

现在列表已完成,M 指向 12。

现在您只需编码即可!


1
投票

对我来说听起来像是家庭作业,但也许一些逻辑可以帮助你:

当你迭代列表时,重点是你想知道当前元素是否是所有其他元素的最大值。这可以通过将 MAX 保持为当前元素(例如 M*)并在 M* 和当前元素之间进行简单比较来解决。然后根据比较的结果更新M*。在迭代结束时,我认为你可以找出你的 MAX 在哪里。


1
投票

Python 中的简单单行代码:

max = sorted(my_list)[-1]

这会将列表按从小到大的顺序排列,然后取最大的最终值。


1
投票

在这里,我们使用名为“functools”的内置模块中提供的reduce函数,本质上“reduce”仅返回一个值,在本例中,该值是数字的最大值。因此,这里的主要逻辑是,如果当前数字大于列表中的下一个数字,则返回当前数字,否则,如果不满足条件,则返回下一个数字。

from functools import reduce
inp = input("Values separated by spaces: ")
arr = map(int, inp.split())
ans = reduce(lambda x, y: x if x > y else y, arr)
print(ans)

0
投票

这是@OlympusMonds 答案中描述的算法的代码实现。如果您想在不使用 max() 函数或任何其他内置函数的情况下查找列表中的最大值,这非常有用:

num_list = [3, 1, 8, 0, 5, 9, 2, 4, 6, 7]
max_val = num_list[0]    # Initialise max_val and set it to the first item in the list
for num in num_list:    
    if num > max_val:
        max_val = num

您可以

print(max_val)
看到它返回列表中的最大值。在这种情况下,输出是
9


-1
投票
s=[10,11,12,9,10,11]
length = len(s)-1
for i in range(length):
    if s[i] > s[i + 1]:
        s[i], s[i + 1] = s[i + 1], s[i]
print(s[-1]) #12

-2
投票
def max(a):

    res = a[0]
    for i in a:
        if res < i:
            res = i
    return res

array = (1, 2, 3, 4, 5, 6)

print(max(array))

-2
投票

你可以试试这个......

my_list = [0, 2, 5, 6, 5, 8, 5, 8, 8]
my_max = [ ]
for list in my_list:
       if list > 7:
       my_max = my_max + [list]
Print(my_max)

这应该输出

[8,8,8]


-2
投票
input_string =input("Enter a list numbers or elements separated by space: ")
userList = input_string.split()

l=list((map(int, userList)))
print(l)

a = (len(l))
temp=0

for i in range(0,a-1):
  if l[i]>l[i+1]:
    c=l[i]
    if c>temp:
       temp=c

  else:
    c= l[i+1]  
    if c>temp:
       temp=c


print(temp) 
© www.soinside.com 2019 - 2024. All rights reserved.