Форум сайта python.su
-1
У меня такие результаты:
>>> print(timeit.timeit('True in [isinstance(d, dict) for d in a]', 'a = [0] * 10 + [{}]')) 10.806834036965029 >>> print(timeit.timeit('dict in map(type, a)', 'a = [0] * 10 + [{}]')) 2.8347205790801127 >>> print(timeit.timeit('dict_in_tuple(a)', ''' def dict_in_tuple(tpl): for i in tpl: if isinstance(i, dict): return True return False a = [0] * 10 + [{}]''')) 7.836950581622432
Офлайн
88
MiKЯ тоже об этом давно слышал и проверил:
функция map на чистом си написана, насколько я слышал, поэтому и результаты по времени испольнения хорошие.
import timeit print(timeit.timeit('True in (isinstance(d, dict) for d in a)', 'a = [0] * 100 + [{}]')) print(timeit.timeit('dict in (type(d) for d in a)', 'a = [0] * 100 + [{}]')) # !!!!!!!!!!!!!!!! print(timeit.timeit('dict_in_tuple(a)', ''' def dict_in_tuple(tpl): for i in tpl: if type(i) == dict: # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! return True return False a = [0] * 100 + [{}]'''))
51.6623192855579 23.122650626727598 23.906970548591914
Офлайн
-1
Shaman
Если так, то да, вполне возможно.
Офлайн