Форум сайта python.su
-1
FishHook
Только я не понял: разве твоя функция не тоже самое делает?
Офлайн
568
MiKКак не суть? Ты предлагаешь крайне неэффективное решение. Из всех возможных вариантов ты выбрал наиболее неправильный. И называешь его эффективным. Да еще и я как бы его придумал. Я несколько негодую.
Ну ладно… Это уже не суть.
Офлайн
568
MiKСовершенно не то же самое.
Только я не понял: разве твоя функция не тоже самое делает?
Офлайн
-1
Ты только ругаешься, но никакой конструктивной критики не генерируешь.
if True in (isinstance(d, dict) for d in tup)
Отредактировано MiK (Июль 4, 2015 14:31:15)
Офлайн
568
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)
Офлайн
-1
FishHook
Может ты не заметил, но я заменил квадратные скобки на круглые.
Результат будет такой-же.
Да, согласен, это не так явно, как твоя функция - она более наглядна.
Отредактировано MiK (Июль 4, 2015 14:44:37)
Офлайн
568
MiKДа хоть на треугольные, ты вопроса не понял или я мелким шрифтом пишу?
Может ты не заметил, но я заменил квадратные скобки на круглые.
Офлайн
-1
def f(tup): c = 0 a = (isinstance(d, dict) for d in tup) c += 1 if next(a): print(c) return True
Офлайн
857
MiK
Если способа проще нет, то этот пожалуй будет более-менее оптимальным:
>>> dict in map(type, ('g', '', 4, {3: 3})) True >>> dict in map(type, ('g', '', 4)) False >>>
Офлайн
-1
py.user.next
Пожалуй этот способ самый нормальный - без огорода. Спасибо.
Офлайн