You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中对包含整数和列表的混合列表进行排序?

解决混合类型列表的排序问题

你遇到的类型错误是因为Python默认排序时会直接比较列表中的所有元素,但整数(int)和列表(list)属于不同类型,无法直接进行大小比较,所以会抛出TypeError。不过通过自定义排序规则,完全可以实现你想要的效果。

实现步骤

  1. 先处理嵌套子列表:将原列表中的子列表先单独排序,确保子列表内部有序;
  2. 自定义排序key:给整数和列表分配不同的排序优先级,让所有整数排在列表前面,同时各自按规则排序。

代码实现

# 原始输入
input_list = [3, 1, 0, 4, 1, [5, 4, 7]]

# 第一步:处理嵌套子列表,先将子列表内部排序
processed_list = []
for item in input_list:
    if isinstance(item, list):
        processed_list.append(sorted(item))
    else:
        processed_list.append(item)

# 第二步:自定义key排序,整数优先级为0(排在前),列表优先级为1(排在后)
output = sorted(processed_list, key=lambda x: (0, x) if isinstance(x, int) else (1, x))

print(output)  # 输出: [0, 1, 1, 3, 4, [4, 5, 7]]

补充说明

  • 如果原列表中有多个子列表,它们会在整数排序完成后,按照自身的内容进行排序(比如[1,3]会排在[2,2]前面,因为[1,3] < [2,2]);
  • 自定义key的逻辑是:给整数返回元组(0, x),给列表返回(1, x),元组比较时会先比较第一个元素,0小于1,所以所有整数自然排在列表前面,然后再比较第二个元素实现各自的排序。

内容的提问来源于stack exchange,提问作者Anshuman Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:27:11