So sánh nhanh thời gian trả lời bài đăng của Abbafei:
import timeit
def func1():
phrase = 'Lucky Dog'
return any(i in 'LD' for i in phrase)
def func2():
phrase = 'Lucky Dog'
if ('L' in phrase) or ('D' in phrase):
return True
else:
return False
if __name__ == '__main__':
func1_time = timeit.timeit(func1, number=100000)
func2_time = timeit.timeit(func2, number=100000)
print('Func1 Time: {0}\nFunc2 Time: {1}'.format(func1_time, func2_time))
Đầu ra:
Func1 Time: 0.0737484362111
Func2 Time: 0.0125144964371
Vì vậy, mã nhỏ gọn hơn với bất kỳ, nhưng nhanh hơn với điều kiện.
EDIT: TL; DR - Đối với chuỗi dài, if-then vẫn nhanh hơn bất kỳ!
Tôi quyết định so sánh thời gian cho một chuỗi ngẫu nhiên dài dựa trên một số điểm hợp lệ được nêu trong các nhận xét:
# Tested in Python 2.7.14
import timeit
from string import ascii_letters
from random import choice
def create_random_string(length=1000):
random_list = [choice(ascii_letters) for x in range(length)]
return ''.join(random_list)
def function_using_any(phrase):
return any(i in 'LD' for i in phrase)
def function_using_if_then(phrase):
if ('L' in phrase) or ('D' in phrase):
return True
else:
return False
if __name__ == '__main__':
random_string = create_random_string(length=2000)
func1_time = timeit.timeit(stmt="function_using_any(random_string)",
setup="from __main__ import function_using_any, random_string",
number=200000)
func2_time = timeit.timeit(stmt="function_using_if_then(random_string)",
setup="from __main__ import function_using_if_then, random_string",
number=200000)
print('Time for function using any: {0}\nTime for function using if-then: {1}'.format(func1_time, func2_time))
Đầu ra:
Time for function using any: 0.1342546
Time for function using if-then: 0.0201827
If-then gần như là một thứ tự cường độ nhanh hơn bất kỳ!