python - 为什么我不能在 Python 中使用 max 来查找数组中的最大一位整数?

标签 python max

我最近有一次面试,被要求用 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/

相关文章:

python - 数组减法和/或整形

Javascript 最小值最大值

google-sheets - 提取前五个最大唯一值

sql - 乘以列的最大值

python - python 将列表中的元素排序为3个单独的列表

python - 在 Python 中对列表中的数字进行二进制搜索

python - 如何将变化的变量写入文本文件

python - 使用 wxPython 在 UltimateListCtrl 中放置一个按钮

sql - 在 Postgres 中使用 max 和 group by 获取第二个属性

mysql - SQL:列出最小值、最大值、平均值、计数时遇到问题