您能告诉我如何优化以下代码吗?
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)
如果您愿意在代码中添加 flatten 功能(这里有一个很好的功能),它基本上可以获取...的列表列表并将其归结为单个列表,您可以执行类似的操作
y = max(flatten([y, list_or_elem]))