2

次のコードを最適化する方法を教えてください。

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)
4

2 に答える 2

1

最善の最適化は、「リストまたは単一の要素のいずれか」を引数として取るなどの愚かさを避けることです。しかし、あなたが主張するのであれば、try/except を使用してできるだけ早く異常を取り除き、確実​​に反復可能にすることをお勧めします。

try: iter(list_or_elem)
except TypeError: iterable = [list_or_elem]
else: iterable = list_or_elem
y = max(y, *iterable)
于 2010-05-13T05:44:09.163 に答える
0

基本的に...のリストのリストのリストを取り、それを単一のリストにまとめることができるフラット化関数をコードに追加したい場合(ここに良いものがあります)、次のようなことができます

y = max(flatten([y, list_or_elem]))
于 2010-05-13T05:53:52.267 に答える