如何合并任意数量[浮点数,字符串]嵌套列表并按浮点数排序
实现任意数量嵌套二元组列表的合并与排序
实现思路
- 用Python的可变参数
*args接收任意数量的输入列表,无需提前确定输入列表总数 - 遍历所有输入列表,将所有二元组元素合并到同一个列表中,无需提前知道单个列表的元素个数
- 调用列表的
sort方法,指定排序依据为二元组的第一个元素(浮点数)
代码实现
原生无依赖版本
def merge_and_sort(*input_lists): # 合并所有输入列表的元素 merged_list = [] for lst in input_lists: merged_list.extend(lst) # 按二元组的浮点数升序排序 merged_list.sort(key=lambda item: item[0]) return merged_list
简洁版(依赖标准库itertools)
import itertools def merge_and_sort(*input_lists): merged_list = list(itertools.chain.from_iterable(input_lists)) merged_list.sort(key=lambda item: item[0]) return merged_list
测试示例
# 示例输入 a = [[4.0, "hello"], [3.5, "world"]] b = [[1.1, "stack"], [2.1, "overflow"], [10.0, "love"], [0.5, "python"]] c = [[5.6, "programming"]] # 调用函数 final = merge_and_sort(a, b, c) print(final)
输出结果:
[[0.5, 'python'], [1.1, 'stack'], [2.1, 'overflow'], [3.5, 'world'], [4.0, 'hello'], [5.6, 'programming'], [10.0, 'love']]
边界情况说明
- 支持输入空列表:若某个输入列表无元素,会自动跳过不影响结果
- 支持常规浮点数排序场景,若有高精度特殊需求可自行调整排序key的处理逻辑
内容的提问来源于stack exchange,提问作者Methalox
相关产品推荐
相关产品推荐

