Обрабатывать многократно и не повторяемые - PullRequest
2 голосов
/ 13 мая 2010

Не могли бы вы дать мне знать, как я могу оптимизировать следующий код?

def f(y, list_or_elem):
  if getattr(list_or_elem, '__iter__'):
    y = max(y, *list_or_elem)
  else:
    y = max(y, list_or_elem)

Ответы [ 2 ]

1 голос
/ 13 мая 2010

Лучшая оптимизация всего этого - избежать такой глупости, как принятие «либо списка, либо отдельного элемента» в качестве аргумента. Но, если вы настаиваете, лучше использовать try / кроме того, чтобы удалить аномалию как можно скорее и сделать то, что обязательно будет повторяемым:

try: iter(list_or_elem)
except TypeError: iterable = [list_or_elem]
else: iterable = list_or_elem
y = max(y, *iterable)
0 голосов
/ 13 мая 2010

, если вы хотите добавить в свой код функцию выравнивания (есть хорошая здесь ), которая может в основном взять список списков списков ... и свести его к одному списку , вы можете сделать что-то вроде

y = max(flatten([y, list_or_elem]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...