python算众数和重数
时间: 2023-10-13 15:24:27 浏览: 47
算法思路:
- 统计每个数出现的次数,记录下最大的出现次数max_count。
- 遍历统计结果,如果出现次数等于max_count,则将该数加入到众数列表中。
代码实现:
```python
def mode(numbers):
count_dict = {}
max_count = 0
for num in numbers:
count = count_dict.get(num, 0) + 1
count_dict[num] = count
if count > max_count:
max_count = count
mode_list = []
for num, count in count_dict.items():
if count == max_count:
mode_list.append(num)
return mode_list, max_count
```
示例:
```python
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
mode_list, max_count = mode(numbers)
print("众数列表:", mode_list)
print("重数:", max_count)
```
输出结果:
```
众数列表: [4]
重数: 4
```
相关问题
python解决有序数列众数重数问题
Python通过统计数列中各个元素的出现次数,找到出现次数最多的元素,就可以解决有序数列众数重数的问题。
首先,定义一个空字典,用于存储每个元素及其出现次数。然后遍历数列中的每个元素,如果元素不在字典中,就将该元素作为键,初始值为1存入字典中;如果元素已经在字典中,就将对应的值加1。
接下来,找出字典中值最大的键。可以使用`max`函数,将字典的`values()`作为参数传入,并设置`key`参数为`dict.get`,这样`max`函数就会找到值最大的键。最后,得到的键就是有序数列中出现次数最多的元素,其重数就是这个值。
下面是用Python实现的示例代码:
```python
def find_mode(sequence):
count = {}
for num in sequence:
count[num] = count.get(num, 0) + 1
mode = max(count, key=count.get)
return mode, count[mode]
sequence = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
mode, count = find_mode(sequence)
print(f"众数为 {mode},重数为 {count}。")
```
以上代码中,数列`sequence`为`[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]`,程序输出结果为"众数为4,重数为4"。也就是说,在有序数列`sequence`中,数字4出现的次数最多,为4次。
python寻找众数
在Python中,可以使用scipy库的mode函数来寻找众数。该函数返回一个元组,包含众数以及众数出现的次数。例如,对于以下列表[1, 2, 2, 3, 3, 3, 4, 4, 4, 4],可以使用以下代码寻找众数:
```
from scipy import stats
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
mode_result = stats.mode(numbers)
print("众数为:", mode_result.mode)
print("众数出现的次数为:", mode_result.count)
```
输出结果为:
```
众数为: 4
众数出现的次数为: 4
```