【问题标题】:How to sort a list of lists based on multiplication of elements inside of smaller list如何根据较小列表内元素的乘法对列表列表进行排序
【发布时间】:2021-06-14 09:24:23
【问题描述】:

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

list1 = [[11,11], [15,12], [13,18], [14,21]...[a,b]]

如何从 a*b 的最小值到最大值对列表进行排序? 假设我们有 list2 = [[1,1], [5,5], [2,2]], 我希望它根据大列表中的 [a,b] 进行排序,因此结果将是:

list3 = [[1,1], [2,2], [5,5]]

我尝试了类似 list1.sort[key = a * b] 的方法,但它不起作用,我真的不知道如何解决这个问题

【问题讨论】:

    标签: python list multiplication


    【解决方案1】:

    我未对您的输入列表进行排序,因此您可以看到结果不同:

    inputs = [[15,12], [13,18], [14,21],[11,11]]
    
    results = sorted(inputs,key=lambda x:x[0]*x[1])
    
    print( f"{results=}" )
    

    结果:

    results=[[11, 11], [15, 12], [13, 18], [14, 21]]
    

    【讨论】:

    • 是的,这正是我想要的,谢谢!
    【解决方案2】:

    试试:

    list1 = [[11, 11], [15, 12], [13, 18], [14, 21]]
    
    out = sorted(list1, key=lambda k: k[0] * k[1])
    print(out)
    

    打印:

    [[11, 11], [15, 12], [13, 18], [14, 21]]
    

    【讨论】:

    • 是的,这正是我想要的,谢谢!
    【解决方案3】:

    这是你想要的吗,根据嵌套列表元素的乘积排序

    def  Sort(sub_li): 
        sub_li.sort(key = lambda x: x[1]*x[0]) 
        return sub_li
    
    sub_li= [[11,11], [15,12], [13,18], [14,21]]
    print(Sort(sub_li)) 
    

    输出

    [[11, 11], [15, 12], [13, 18], [14, 21]]
    

    【讨论】:

    • 是的,这正是我想要的,谢谢!
    • 欢迎聆听
    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2021-06-17
    • 2019-12-19
    • 1970-01-01
    • 2023-03-05
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多