如何优化寻找三个变量中最大奇数的Python代码?
优化寻找三个变量中最大奇数的Python代码
你的原始代码分支嵌套过多、逻辑冗余,完全可以简化成更清晰、更易维护的版本。核心思路是先筛选出所有奇数,再从中找最大值,如果没有奇数则输出提示信息。
简洁实现方案一(列表推导式)
# 从x、y、z中筛选出所有奇数 odds = [num for num in [x, y, z] if num % 2 != 0] if odds: # 列表非空时,直接取最大值输出 print(max(odds)) else: # 列表为空说明全是偶数 print('None of them are odd')
实现方案二(生成器表达式,更省内存)
如果后续需要检查的变量数量很多,用生成器表达式可以避免创建完整列表,节省内存:
odds = (num for num in [x, y, z] if num % 2 != 0) try: print(max(odds)) except ValueError: # 当生成器为空时,max()会抛出ValueError,捕获后输出提示 print('None of them are odd')
为什么这两种方案更好?
- 代码行数大幅减少,逻辑一目了然,不用再写一堆嵌套的
if-elif - 扩展性强:如果以后要检查更多变量,只需要修改
[x, y, z]这个列表即可,不需要新增分支 - 利用Python内置的
max()函数,避免手动写比较逻辑,减少出错概率
内容的提问来源于stack exchange,提问作者physics_python
相关产品推荐
相关产品推荐

