您能告诉我如何优化以下代码吗?
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)
答案 0 :(得分:1)
所有人的最佳优化是避免将“列表或单个元素”作为参数的愚蠢。但是,如果你坚持,最好使用try / except来尽快删除异常,并确保它是可迭代的:
try: iter(list_or_elem)
except TypeError: iterable = [list_or_elem]
else: iterable = list_or_elem
y = max(y, *iterable)
答案 1 :(得分:0)
如果你愿意在你的代码中添加flatten函数(这是一个很好的here),它基本上可以列出一系列列表...并将它归结为一个列表,你可以做类似
的事情y = max(flatten([y, list_or_elem]))