Python统计数组元素出现次数并生成指定格式输出的实现方案
数组元素频次与值的交替列表生成方案
方法一:使用collections.Counter(推荐,效率更高)
Python标准库的Counter可以一键统计数组中各元素的出现次数,且Python 3.7及以上版本会保留元素的插入顺序,完全匹配你的需求:
from collections import Counter input_arr = [15, 15, 15, 4, 4, 4, 4, 4, 4] element_counts = Counter(input_arr) output_list = [] # 遍历统计结果,依次将频次、元素值加入结果列表 for value, count in element_counts.items(): output_list.append(count) output_list.append(value) print(output_list) # 输出: [3, 15, 6, 4]
方法二:手动统计(适合理解底层逻辑)
如果想自己实现统计逻辑,可以用集合记录已处理过的元素,避免重复计算:
input_arr = [15, 15, 15, 4, 4, 4, 4, 4, 4] output_list = [] processed_elements = set() for num in input_arr: if num not in processed_elements: # 统计当前元素的出现次数 freq = input_arr.count(num) output_list.extend([freq, num]) processed_elements.add(num) print(output_list) # 输出: [3, 15, 6, 4]
注意事项
- 方法一的
Counter仅需遍历数组一次,处理大型数组时性能远优于方法二(方法二的count每次都会重新遍历数组)。 - 若使用Python 3.6及以下版本,
Counter不会保留插入顺序,此时可改用OrderedDict配合遍历实现顺序保留,或直接使用方法二。
内容的提问来源于stack exchange,提问作者Guhan Gnanam
相关产品推荐
相关产品推荐

