Внимание, это немного рекурсивно;)
Я ответил на этот вопрос: Python: Как я могу получить все элементы в списке до самого длинного элемента?
И после того, как я представил там, где еще один ответ, который должен быть быстрее (автор думал, и я тоже).Я пытался найти время для разных решений, но решение, которое должно быть медленнее, было на самом деле быстрее.Это заставило меня думать, что с моим кодом что-то не так.Или это так?
import string
import random
import time
def solution1(lst):
return lst[:lst.index(max(lst, key=len))]
def solution2(lst):
idx, maxLenStr = max(enumerate(lst), key=lambda x:len(x[1]))
return lst[:idx]
# Create a 100000 elements long list that contains
# random data and random element length
lst = []
for i in range(100000):
s = "".join([random.choice(string.letters+string.digits) for x in range(1, random.randint(1,50))])
lst.append(s)
# Time the first solution
start = time.time()
solution1(lst)
print 'Time for solution1', (time.time() - start)
# Time the second solution
start = time.time()
solution2(lst)
print 'Time for solution2', (time.time() - start)
Обновление
Прежде чем кто-либо скажет, почему я поставил это как новый вопрос.Вопрос больше в том, как я учусь измерять время выполнения ...