Python在元组中添加值

时间:2013-01-15 02:51:01

标签: python

我已经搜索过,找不到我在处理元组时添加总和的方法。 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)]

由于元组a中的(4,5) = 9和a的最大值,将其移动到另一个元组,现在应该是:

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

元组b也是如此。

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:3)

如果你想从每个列表中删除max tuple,那么:

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

或者如果你想从一个中删除max tuple并将其添加到下一个,那么::

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

答案 2 :(得分:0)

所以喜欢:

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