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]?
答案 0 :(得分:1)
此处的变量max
(变量名称选择不佳,考虑到max()
是Python中的内置函数)在循环中不断更新。如果for循环的当前迭代在myList
中产生一个元素,其值超过max
,则将max
分配给该值,并且循环继续进行下一个迭代,直到达到myList
的结尾。
答案 1 :(得分:1)
实际上,有一个比较-如果需要的话... 有两种可能的情况:
myList[1] > myList[0]
然后max = myList[1]
,并在下一次迭代中将myList[2]
与max
进行比较,这类似于将myList[2]
与myList[1]
进行比较。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]