मुझे लगता है कि स्वीकृत उत्तर बहुत अच्छा है, लेकिन आप इसे स्पष्ट रूप से क्यों नहीं करते हैं? मुझे लगता है कि अधिक लोग आपके कोड को समझेंगे, और वह पीईपी 8 के साथ समझौता करेगा:
max_value = max(my_list)
max_index = my_list.index(max_value)
यह विधि भी स्वीकृत उत्तर की तुलना में लगभग तीन गुना तेज है:
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)
मेरे कंप्यूटर में चलने के परिणाम:
Explicit: 8.07 usec/pass
Implicit: 22.86 usec/pass
अन्य सेट:
Explicit: 6.80 usec/pass
Implicit: 19.01 usec/pass