Tôi nghĩ rằng câu trả lời được chấp nhận là tuyệt vời, nhưng tại sao bạn không làm điều đó một cách rõ ràng? Tôi cảm thấy nhiều người sẽ hiểu mã của bạn hơn và điều đó phù hợp với PEP 8:
max_value = max(my_list)
max_index = my_list.index(max_value)
Phương pháp này cũng nhanh hơn khoảng ba lần so với câu trả lời được chấp nhận:
import random
from datetime import datetime
import operator
def explicit(l):
max_val = max(l)
max_idx = l.index(max_val)
return max_idx, max_val
def implicit(l):
max_idx, max_val = max(enumerate(l), key=operator.itemgetter(1))
return max_idx, max_val
if __name__ == "__main__":
from timeit import Timer
t = Timer("explicit(l)", "from __main__ import explicit, implicit; "
"import random; import operator;"
"l = [random.random() for _ in xrange(100)]")
print "Explicit: %.2f usec/pass" % (1000000 * t.timeit(number=100000)/100000)
t = Timer("implicit(l)", "from __main__ import explicit, implicit; "
"import random; import operator;"
"l = [random.random() for _ in xrange(100)]")
print "Implicit: %.2f usec/pass" % (1000000 * t.timeit(number=100000)/100000)
Kết quả khi họ chạy trong máy tính của tôi:
Explicit: 8.07 usec/pass
Implicit: 22.86 usec/pass
Bộ khác:
Explicit: 6.80 usec/pass
Implicit: 19.01 usec/pass