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

元组的不可变与此无关。你仍然可以在这里使用maxsum

>>> 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)]

或者如果你想从一个中删除最大元组并将其添加到下一个然后::

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 回答