在for循环中检查两个值

时间:2018-11-12 07:04:31

标签: python for-loop

我正在尝试利用Python中的单个for循环来

  1. 检查list中最大的数字,然后打印找到的索引

  2. 计算list中该最大数字的出现频率。

    for index in range(1, listLength):
        if numbersList[index] > numbersList[largest]:
            largest = index
    

我已经完成了第1部分,但是我不确定如何在相同的for循环中搜索它的频率。

感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

您完全不必使用循环即可实现此目的。对列表进行排序,并在最后一个索引处找到数字,然后使用count(number)来获取出现的次数。

numbers = [1, 3, 4, 2, 3, 4, 5]
numbers.sort() 
print(numbers) 
[1, 2, 3, 3, 4, 4, 5]

list.count(数字)

[1, 2, 3, 3, 4, 4, 5].count(5)
1

或者您可以使用导入以下内容

 from collections import Counter
 Counter(list)

将以字典格式为您提供输出计数。

Counter({'1': 1, '2': 1, '3': 2, '4': 2, '5': 1})

答案 1 :(得分:0)

有内置方法可以做到这些。

In [110]: lst = [1,2,4,5,66,7,7,4,66,78,1]
In [111]: max(lst)
Out[111]: 78

1。检查列表中最大的数字,然后打印找到的索引,

In [112]: print lst.index(max(lst))
Out[112]: 9

2。计算列表中该最大数字的出现频率。

In [113]: print lst.count(max(lst))
Out[113]: 1

答案 2 :(得分:0)

如果不允许使用内置函数,请使用整数,例如Count。这代表数量最多的频率。遍历该数组,然后找到新的最大数集largest = indexcounter = 0.,添加一个条件,如果当前数等于您保存的最大数,则将count加1

答案 3 :(得分:0)

如果您不想使用任何库,则可以使用以下代码来实现:

counter = 1
for index in range(listLength):
    if index == 0:
        largest = 0
    if numbersList[index] == numbersList[largest]:
        counter += 1
    elif numbersList[index] > numbersList[largest]:
        counter = 1
        largest = index

答案 4 :(得分:0)

解决这个问题的方法很少

a = [1, 9, 3, 7, 5, 9, 7, 4, 9, 5] # test_data
  1. max()count

    largest = max(a)
    print(largest)          # 9
    print(a.count(largest)) # 3
    

    通常,上面是获取列表中最大数量和计数元素的最常见且广泛使用的方法。

  2. max()Counter

    from collections import Counter
    c = Counter(a)
    print(c[max(a)]) # 3
    

    Counter来自collections,它支持各种方法。有关更多信息,请访问以下网站:https://data-flair.training/blogs/python-counter/