这是我的代码:
def is_odd_heavy(arr):
even_arr = [x for x in arr if x%2==0]
odd_arr = [x for x in arr if x%2!=0]
if len(odd_arr)==0:
return False
elif len(even_arr)==0:
return True
return min(odd_arr)>max(even_arr)
问题:是否可以将中间繁琐的条件换成更紧凑的条件?
让我们利用这样一个事实,即在空列表或迭代器的情况下,最小和最大运算符可以被赋予默认值,并将其提供给它们进行处理。在遍历偶数和奇数时,同时计算最小值和最大值,如果没有找到数字,则为 None。接下来,我们计算出三种组合。在这种情况下,不会创建中间列表,而是使用生成器,这样可以节省内存并且工作速度更快。
您可以使条件本身更短:
代替
所以:
而不是
所以:
那些。如果第一个列表非空并且第二个列表为空或满足条件
您也可以(在某种意义上)简化如下
恩,还是免得增加时间复杂度
比较元组/列表会给你想要的结果。