我已经搜索过,找不到我在处理元组时添加总和的方法。 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也是如此。
答案 0 :(得分: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)
答案 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]))