Python新手求助:如何自动递增索引生成统计列表?
统计列表中随机数出现次数的高效方法
方法1:列表推导式+去重(基础实现)
不用手动逐个编写统计项,先提取列表中的唯一元素,再通过循环自动生成统计列表:
list_1 = [1, 2, 2, 3, 3, 3, 4] # Python3.7+用dict.fromkeys提取唯一元素并保持原有出现顺序 unique_nums = list(dict.fromkeys(list_1)) # 自动生成[元素, 次数]格式的列表 count_list = [[num, list_1.count(num)] for num in unique_nums] print(count_list)
如果不需要保持元素顺序,用unique_nums = list(set(list_1))更简洁,但set会打乱原有顺序。
方法2:用collections.Counter(推荐,高效)
Python标准库的Counter是专门做计数的工具,仅需遍历一次列表就能完成统计,处理10000条数据也毫无压力:
from collections import Counter list_1 = [1, 2, 2, 3, 3, 3, 4] # 直接统计每个元素的出现次数 count_counter = Counter(list_1) # 转成你需要的列表格式 count_list = [[num, cnt] for num, cnt in count_counter.items()] print(count_list)
这个方法时间复杂度为O(n),比反复调用list.count()的O(n²)高效得多,数据量越大优势越明显。
方法3:用pandas(适合大数据场景)
如果你的数据量极大,用pandas的value_counts处理会更便捷:
import pandas as pd list_1 = [1, 2, 2, 3, 3, 3, 4] # 转成Series类型 num_series = pd.Series(list_1) # 统计元素出现次数 count_result = num_series.value_counts() # 转成目标列表格式 count_list = [[num, cnt] for num, cnt in count_result.items()] print(count_list)
内容的提问来源于stack exchange,提问作者Tom Alf
相关产品推荐
相关产品推荐

