1

タプルを処理するときに合計を追加するために探している方法が見つかりませんでした。a と b は両方とも不変のタプルであり、最大値を見つけることができるようにそれらの値を追加しようとしています。sum 関数と max() を呼び出して辞書でそれを行う方法は知っていますが、タプルではそうではありませんので、助けてください。タプルとタプルは不変で変更できないため、ちょっと難しいことは知っていますが、変更していません。合計を知り、最大のものを別のタプルに追加したいだけです。

a = [(1,2),(4,5),(1,0)]
b = [(3,2),(9,4),(2,2)]

出力:

a=[(3),(9),(1)]
b=[(5),(13),(4)]

(4,5) = 9タプル a は a の最大値であるため、それを別のタプルに移動すると、a は次のようになります。

a = [(1,2),(1,0)]

タプル b についても同様です。

4

3 に答える 3

5

タプルが不変であることは、これとは何の関係もありません。あなたはまだここで使用することができmaxますsum

>>> max(a, key=sum)
(4, 5)

その後、あなたがそれでやりたいことは何でもしてください。完全な呪文は次のようになります。

maximums = []
for tuples in (a, b):
    max_tuple = max(tuples, key=sum)
    tuples.remove(max_tuple)
    maximums.append(tuples)
于 2013-01-15T02:56:26.277 に答える
3

各リストから最大タプルを削除する場合:

In [17]: a=[(1,2),(4,5),(1,0)]

In [18]: a.remove(max(a, key=sum))

In [19]: a
Out[19]: [(1, 2), (1, 0)]

In [20]: b = [(3,2),(9,4),(2,2)]

In [21]: b.remove(max(b,key=sum))

In [22]: b
Out[22]: [(3, 2), (2, 2)]

または、最大タプルを1つから削除して次のタプルに追加する場合::

In [34]: a=[(1,2),(4,5),(1,0)]

In [35]: b = [(3,2),(9,4),(2,2)]

In [36]: b.append(a.pop(a.index(max(a,key=sum))))

In [37]: b
Out[37]: [(3, 2), (9, 4), (2, 2), (4, 5)]

In [38]: a
Out[38]: [(1, 2), (1, 0)]

または、各リストから maxx タプルを削除する場合。そしてそれらを別のリストに追加します::

In [44]: maxx=[]

In [45]: a=[(1,2),(4,5),(1,0)]

In [46]: b = [(3,2),(9,4),(2,2)]

In [47]: maxx.append(a.pop(a.index(max(a,key=sum))))

In [48]: maxx.append(b.pop(b.index(max(b,key=sum))))

In [49]: a
Out[49]: [(1, 2), (1, 0)]

In [50]: b
Out[50]: [(3, 2), (2, 2)]

In [51]: maxx
Out[51]: [(4, 5), (9, 4)]
于 2013-01-15T03:01:42.717 に答える
0

以下のようなので:

a.remove(max(a,key=lambda x:x[0]+x[1]))
b.remove(max(b,key=lambda x:x[0]+x[1]))

?

于 2013-01-15T02:56:56.883 に答える