本程序的功能是随机产生50个1~20的整数,存入列表list1,然后找出这一组数据中的众数。所谓众数,就是在这组数据中出现次数最多的数。 注意:一组数据中的众数可能有多个,(即有多个数据的出现次数相同)。程序至少包含一个Freq函数过程,求出列表中每个不相同的数据出现的次数,并返回一个列表
时间: 2023-05-26 19:06:48 浏览: 111
。代码如下:
```python
import random
def Freq(list1):
freq_dict = {}
for num in list1:
if num in freq_dict:
freq_dict[num] += 1
else:
freq_dict[num] = 1
return freq_dict
list1 = [random.randint(1, 20) for _ in range(50)]
freq_list = Freq(list1).items()
max_freq = max(freq_list, key=lambda x: x[1])[1]
mode_list = [num for num, freq in freq_list if freq == max_freq]
print("原列表数据:", list1)
print("每个数出现次数:", dict(freq_list))
print("众数列表:", mode_list)
```
程序先使用随机数函数生成50个1~20的整数,并存储在列表list1中。然后调用Freq函数,为这50个数据统计出现的次数,并返回一个字典。Freq函数中使用了一个字典freq_dict来存储每个不相同的数据出现的次数。当遍历到某个数时,若该数已存在于字典中,则将该数对应的值加1;如果不存在,则将该数作为键,值初始化为1。函数返回字典freq_dict。
接下来,程序调用max函数项字典中的values值(即每个数据出现的次数)最大的键值对,并用lambda函数规定比较条件。由于max函数只返回一个键值对,因此还需取出该键值对的值,即出现最多的次数。然后,程序遍历字典freq_list,将其键和值分别取出,判断其值是否等于最大频数max_freq,如果是,则将该键加入众数列表mode_list。
最后,程序输出原列表数据,每个数出现次数,以及众数列表。