次のコードを最適化する方法を教えてください。
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)
最善の最適化は、「リストまたは単一の要素のいずれか」を引数として取るなどの愚かさを避けることです。しかし、あなたが主張するのであれば、try/except を使用してできるだけ早く異常を取り除き、確実に反復可能にすることをお勧めします。
try: iter(list_or_elem)
except TypeError: iterable = [list_or_elem]
else: iterable = list_or_elem
y = max(y, *iterable)
基本的に...のリストのリストのリストを取り、それを単一のリストにまとめることができるフラット化関数をコードに追加したい場合(ここに良いものがあります)、次のようなことができます
y = max(flatten([y, list_or_elem]))