5

私は 3 タプルの配列を持っており、Python の各タプルの要素の積の降順でソートしたいと考えています。したがって、たとえば、配列が与えられた場合

[(3,2,3), (2,2,2), (6,4,1)]

3*2*3 = 18、2*2*2 = 8、6*4*1 = 24 なので、最終結果は次のようになります。

[(6,4,1)、(3,2,3)、(2,2,2)]

たとえば、タプルの最初の要素で並べ替える方法は知っていますが、これに取り組む方法がわかりません。どんな助けでも大歓迎です。ありがとう!

4

4 に答える 4

12

/のkey引数を使用して積を計算する関数を指定し、引数をに設定して結果を昇順ではなく降順にします。例:sortedlist.sortreverseTrue

from operator import mul
print sorted([(3,2,3), (2,2,2), (6,4,1)], key=lambda tup: reduce(mul, tup), reverse=True)
于 2013-10-24T04:33:05.137 に答える
4
In [176]: L = [(3,2,3), (2,2,2), (6,4,1)]

In [177]: L.sort(key=lambda (a,b,c):a*b*c, reverse=True)

In [178]: L
Out[178]: [(6, 4, 1), (3, 2, 3), (2, 2, 2)]
于 2013-10-24T04:33:24.740 に答える
1
>>> from operator import mul
>>> input_list = [(3,2,3), (2,2,2), (6,4,1)]
>>> input_list.sort(key=lambda tup: reduce(mul,tup)) 
>>> print input_list
[(2, 2, 2), (3, 2, 3), (6, 4, 1)]
于 2013-10-24T05:15:18.770 に答える