python - 查找字符串中最短的单词

标签 python

我是编码新手,我正在研究一个要求在句子中找到最短单词的问题。我很困惑之间的区别是什么:

def find_short(s):
    for x in s.split():
        return min(len(x)) 

def find_short(s):
    return min(len(x) for x in s.split())

是,因为前者给我一个错误,而后者似乎工作正常。它们实际上不是一回事吗?

最佳答案

Are they not virtually the same thing?

不,它们不是一回事。如果 s 等于 "hello world",在第一次迭代中,x 将是 "hello"。这里有两处错误:

  • 您试图在第一次迭代中返回,而不是遍历所有元素(单词)以找出最短的元素。
  • min(len(x)) 就像说 min(5) 这不仅是传递给 min(..)< 的错误参数 但也没有意义。您希望传递一个元素列表,min 将从中计算最小值。

第二种做法其实是正确的。 See this answer of mine了解如何解释它。简而言之,您正在计算每个单词的长度,将其放入一个列表(实际上是一个生成器),然后要求 min 对其进行最小计算。

有一种更简单的方法可以了解为什么您的第二个表达式有效。尝试打印以下结果:

print([len(x) for x in s.split()])

关于python - 查找字符串中最短的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51314005/

相关文章:

python - 有没有办法在 Django 中为内联管理表单设置单独的页面?

python - 使用tesseract和opencv进行python字符串比较

Python,括号对打印语句中 bool 值的影响

Python 相对路径简化器

python - 密码保护整个 Django 应用程序

Python:导入错误:没有名为_md5 的模块

python - 我如何在 django admin 的所有 View 中拥有 app_list

java - 稀疏数据的离散和连续分类器

python - Python中数组的移动平均值

python - 在Python中使用comtypes将Excel文档转换为pdf时出错