Cảnh báo, đây là một chút đệ quy;)chức năng Timing
Tôi đã trả lời câu hỏi này: Python:How can i get all the elements in a list before the longest element?
Và sau khi tôi nộp có nơi khác trả lời rằng nên nhanh hơn (tác giả nghĩ, và vì vậy đã làm tôi) . Tôi đã cố gắng để thời gian các giải pháp khác nhau nhưng giải pháp nên được chậm hơn đã thực sự nhanh hơn. Điều này khiến tôi nghĩ rằng có gì đó sai với mã của tôi. Hoặc là nó?
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)
Cập nhật
Trước khi bất cứ ai đề cập đến lý do tại sao tôi đặt này là như một câu hỏi mới. Câu hỏi đặt ra là tôi hiểu thêm về cách đo thời gian thực hiện ...
hai chức năng này không trở lại cùng một loại đối tượng – joaquin
Doh! Tất nhiên cảm ơn! –
Đã sửa lỗi. Nhưng điều đó thậm chí làm cho mã của tôi nhanh hơn ... Và tôi vẫn nghĩ solution2 shoud được nhanh hơn .. –