1. 使用 `collections.Counter`
```python
from collections import Counter
def find_mode(nums):
counter = Counter(nums)
max_count = max(counter.values())
mode = [k for k, v in counter.items() if v == max_count]
return mode if len(mode) == 1 else mode 如果只有一个众数,返回单个众数,否则返回所有众数
2. 使用 `statistics.mode````pythonimport statistics
def find_mode(nums):
return statistics.mode(nums)
3. 暴力求解(不推荐,效率低)

```python
def find_mode_brute_force(nums):
count_dict = {}
for num in nums:
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1
max_count = max(count_dict.values())
mode = [k for k, v in count_dict.items() if v == max_count]
return mode if len(mode) == 1 else mode 如果只有一个众数,返回单个众数,否则返回所有众数
4. 使用 `set` 和 `list````pythondef find_mode_set(nums):
unique_nums = list(set(nums)) 去重
frequency_dict = {}
for num in unique_nums:
frequency_dict[num] = nums.count(num)
max_frequency = max(frequency_dict.values())
mode = [k for k, v in frequency_dict.items() if v == max_frequency]
return mode if len(mode) == 1 else mode 如果只有一个众数,返回单个众数,否则返回所有众数
5. 使用 `operator.itemgetter`
```python
import operator
def find_mode_operator(nums):
unique_nums = list(set(nums)) 去重
frequency_dict = {}
for num in unique_nums:
frequency_dict[num] = nums.count(num)
sorted_dict = sorted(frequency_dict.items(), key=operator.itemgetter(1), reverse=True)
max_frequency = sorted_dict
mode = [k for k, v in frequency_dict.items() if v == max_frequency]
return mode if len(mode) == 1 else mode 如果只有一个众数,返回单个众数,否则返回所有众数
以上方法均可用于求列表中的众数,你可以根据具体需求选择合适的方法。如果列表中有多个众数,上述方法将返回所有众数;如果只有一个众数,则返回单个众数。
