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

Python中如何根据元组内元素乘积对列表中的元组进行排序

按元组元素乘积排序的实现方案

你当前编写的是标准选择排序逻辑,默认直接比较元组本身(Python会按元组元素顺序依次比较大小),不符合按元组内部元素乘积排序的需求,只需调整比较判断的逻辑即可。


修改后的完整代码

def sort_list (a):
    i = 0
    while i < len(a):
        key = i
        j = i + 1
        
        while j < len(a):
            # 替换为计算元组乘积后比较
            if (a[key][0] * a[key][1]) > (a[j][0] * a[j][1]):
                key = j
            j += 1
            
        a[i], a[key] = a[key], a[i]
        i += 1
    return a        

m = [(2, 3.0), (3, 1.0), (4, 2.5), (1, 1.0)]

sort_list(m)

print(m)
# 输出:[(1, 1.0), (3, 1.0), (2, 3.0), (4, 2.5)]

补充说明

  • 如果需要适配任意长度的元组场景,可使用math.prod()计算元组乘积(Python3.8及以上版本支持),将比较逻辑替换为if math.prod(a[key]) > math.prod(a[j]):即可
  • 如果无需自行实现排序算法,可直接调用Python内置sorted函数简化实现,代码如下:
m = [(2, 3.0), (3, 1.0), (4, 2.5), (1, 1.0)]
# 按元组元素乘积升序排序
m_sorted = sorted(m, key=lambda x: x[0] * x[1])
print(m_sorted)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:45:07