FishHook
Только я не понял: разве твоя функция не тоже самое делает?
MiKКак не суть? Ты предлагаешь крайне неэффективное решение. Из всех возможных вариантов ты выбрал наиболее неправильный. И называешь его эффективным. Да еще и я как бы его придумал. Я несколько негодую.
Ну ладно… Это уже не суть.
MiKСовершенно не то же самое.
Только я не понял: разве твоя функция не тоже самое делает?
if True in (isinstance(d, dict) for d in tup)
MiKДа блин же!
Так будет оптимально?
#!/usr/bin/env python # -* coding: utf-8 -*- tup = ({}, 1, 2, 3, 4) c = 0 def f(d): global c c += 1 print isinstance(d, dict) print c print True in (f(d) for d in tup)
MiKДа хоть на треугольные, ты вопроса не понял или я мелким шрифтом пишу?
Может ты не заметил, но я заменил квадратные скобки на круглые.
def f(tup): c = 0 a = (isinstance(d, dict) for d in tup) c += 1 if next(a): print(c) return True
MiK
Если способа проще нет, то этот пожалуй будет более-менее оптимальным:
>>> dict in map(type, ('g', '', 4, {3: 3})) True >>> dict in map(type, ('g', '', 4)) False >>>