此代码如何比较列表中的数字并输出最大值?

时间:2018-10-01 21:13:41

标签: python python-3.x

myList=[1,2,3]
max=myList[0]

for i in range(1,len(myList)):
    if myList[i]>max:
        max=myList[i]

print(max)

它将数字存储在临时变量的第一个插槽中,并将其他两个数字与该临时变量进行比较。

它怎么知道哪一个最大?

它仅存储:

myList[1] = max if myList[1] > max and 
myList[2] = max if myList[2] > max

代码中的myList [1]和myList [2]之间没有比较。

程序如何知道myList [2]大于myList [1]?

5 个答案:

答案 0 :(得分:1)

此处的变量max(变量名称选择不佳,考虑到max()是Python中的内置函数)在循环中不断更新。如果for循环的当前迭代在myList中产生一个元素,其值超过max,则将max分配给该值,并且循环继续进行下一个迭代,直到达到myList的结尾。

答案 1 :(得分:1)

实际上,有一个比较-如果需要的话... 有两种可能的情况:

  1. 如果myList[1] > myList[0]然后max = myList[1],并在下一次迭代中将myList[2]max进行比较,这类似于将myList[2]myList[1]进行比较。
  2. 如果myList[1] <= myList[0],则max等于myList[0]。在这种情况下,我们不需要将myList[2]myList[1]进行比较,因为我们已经知道myList[0]大于或等于myList[1] ,因此我们只需要比较myList[2]myList[0]

这是一个非常紧凑的示例,但对于较大的列表来说确实如此...

希望这很有道理,如果需要更多说明,请发表评论。

答案 2 :(得分:0)

1-您的max设置为数组中的第一个元素-> max = 1

2-从第二个开始,您将最大值与列表中的元素进行比较 位置(在本例中为2)

3- 2> 1,因此max被更新为数字2

3-您将新的max(数字2)与数字3进行了比较

4- 3> 2,因此max被更新为数字3

5-您已经到达列表末尾

最多可打印6张-3

答案 3 :(得分:0)

“ max”变量仅保留分配给它的最大数量。 在循环的每个步骤中,如果列表中给定的数字大于“ max”变量,则我们将该数字分配给“ max”。

答案 4 :(得分:0)

这与您处理大量纸张时的处理方式一样。您不必跟踪最大元素的位置,而仅跟踪其值。

首先查看第一个元素,然后将该值标记为最大值。此时,它也是最小值,中位数,均值和...:-)

现在,在列表中向下移动一次一次。比较元素与最大值如果元素较大,则将最大值更新为该新的更高的值。 myList[1]mylist[2]没有显式检查。这是怎么回事,假设(如您所做的那样)myList [1]> myList [0]:

max = myList[0]           # myList[0] and max are now the same value
while ...
   if mylist[1] > max:    # This compares myList[1] > myList[0]
       max = myList[1]    # myList[1] and max are now the same value
   ... # Next loop iteration, i=2
   if myList[2] > max     # THIS is where you compare myList[2] and the value of myList[1]
   ...

这样可以清除操作吗?如果没有,请尝试添加一些基本跟踪:

for i in range(1, len(myList)):
    print(i, myList[1], max)
    if myList[i] > max:
        max = myList[i]