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

如果您愿意在代码中添加 flatten 功能(这里有一个很好的功能),它基本上可以获取...的列表列表并将其归结为单个列表,您可以执行类似的操作

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