我最近有一次面试,被要求用 Python 解决以下问题:
写一个函数:
def solution(A):
这样,给定一个由 N 个整数组成的数组 A
,它返回所有一位整数中的最大值。
例如,给定数组A如下:
[-6, -91, 1011, -100, 84, -22, 0, 1, 473]
函数应该返回 1。
假设:
- N 是 [1...1,000] 范围内的整数
- 数组
A
的每个元素都是[-10,000..10,000]范围内的整数。 - 数组
A
中至少有一个元素满足任务语句中的条件。
我想出了以下我认为很优雅的解决方案,但我得到的分数只有 55%:
def solution(A):
return max([i for i in A if len(str(i))==1])
为什么这个解决方案不正确?
最佳答案
这是一个在我的书中打勾的解决方案。
def solution(integers):
"""Return max single digit integer in sequence `integers`"""
try:
return max(i for i in integers if -9 <= i <= 9)
except ValueError:
return ValueError("Could not find single digit integer in list")
print(solution([-6, -91, 1011, -100, 84, -22, 0, 1, 473]))
它使用描述性参数名称,带有注释,对数字大小进行简单比较,并使用带有内置函数 max
的生成器而不是不必要的列表。它还通过更热门的错误消息重新引发最预期的错误。该功能更易于维护和使用。
关于python - 为什么我不能在 Python 中使用 max 来查找数组中的最大一位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69201354/