Предупреждение, это немного рекурсивно;)
Я ответил на этот вопрос: 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)
Прежде чем кто-либо скажет, почему я задаю этот вопрос, это новый вопрос. Вопрос больше в том, что я учусь измерять время выполнения ...