2012-07-17 83 views

Trả lời

24

max takes a key argument, với nó bạn có thể nói max làm thế nào để tính giá trị cho mỗi mục trong một iterable. sum sẽ làm độc đáo ở đây:

max(x, key=sum) 

Demo:

>>> x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]] 
>>> max(x, key=sum) 
[7, 8, 9] 

Nếu bạn cần phải sử dụng một phương pháp khác nhau của cách tổng hợp các mặt hàng của bạn, bạn có thể chỉ định các chức năng của riêng bạn quá; điều này là không giới hạn ở những trăn chức năng built-in:

>>> def mymaxfunction(item): 
...  return sum(map(int, item)) 
... 
>>> max([['1', '2', '3'], ['7', '8', '9']], key=mymaxfunction) 
['7', '8', '9'] 
+0

đánh bại tôi vào nó :) 1 mặc dù –

+0

@JonClements: Đây được * với * tôi có để tìm lại tên đối số từ khóa. :-P –

+0

Hoàn hảo :) Tôi không có ý tưởng nó có thể đơn giản như vậy. – alwbtc

0

Đối với tính đầy đủ và như @Martijn đánh bại tôi vào câu trả lời thanh lịch nhất - Tôi chỉ sẽ ném vào tùy chọn trước khi tham số key= đã có sẵn trong Python (nhưng nếu bạn đang sử dụng < 2.5 - bạn thực sự cần nâng cấp) và làm thế nào xấu xí nó sử dụng là:

x = [[1,2,3], [4,5,6], [7,8,9], [2,2,0]] 
with_idx = ((sum(v), i) for i,v in enumerate(x)) 
print x[max(with_idx)[1]] 
Các vấn đề liên quan