嵌套数组的内部子数组独立排序及出现频次统计问题
实现方案
1. 内部子数组独立排序
Python中可以直接通过遍历外层数组,对每个子数组单独执行排序操作,两种常用实现方式如下:
非原地排序(生成新数组,原数组保持不变)
使用列表推导式配合sorted()函数实现:
arr = [[2,5,4,6],[7,3,1,8],[3,9,1,1],[2,4,3,2]] sorted_arr = [sorted(sub_arr) for sub_arr in arr] print(sorted_arr) # 输出结果:[[2,4,5,6],[1,3,7,8],[1,1,3,9],[2,2,3,4]]
原地排序(直接修改原数组)
遍历调用子数组的sort()方法:
arr = [[2,5,4,6],[7,3,1,8],[3,9,1,1],[2,4,3,2]] for sub_arr in arr: sub_arr.sort() print(arr) # 输出结果:[[2,4,5,6],[1,3,7,8],[1,1,3,9],[2,2,3,4]]
2. 判断是否存在频次最高的子数组
由于列表类型不可哈希,无法直接作为统计频次的键,因此先将子数组转为元组,再用collections.Counter统计频次即可:
from collections import Counter # 统计每个子数组的出现次数 sub_counter = Counter(tuple(sub) for sub in sorted_arr) # 获取最高出现频次 max_freq = max(sub_counter.values()) # 筛选所有最高频次的子数组 most_frequent_subs = [list(k) for k, v in sub_counter.items() if v == max_freq] # 判断逻辑 if max_freq > 1: print(f"存在出现频次最高的子数组,频次为{max_freq},对应子数组:{most_frequent_subs}") else: print("所有子数组仅出现1次,无更高频次的子数组")
内容的提问来源于stack exchange,提问作者prs
相关产品推荐
相关产品推荐

