查找字符串中的最短单词

And*_*EKI 5 python

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

def find_short(s):
    for x in s.split():
        return min(len(x)) 
Run Code Online (Sandbox Code Playgroud)

def find_short(s):
    return min(len(x) for x in s.split())
Run Code Online (Sandbox Code Playgroud)

是的,因为前者给了我一个错误,后者似乎工作正常.它们几乎不是一回事吗?

Eug*_*ako 1

不,它们不是同一件事。

在第一段代码中,您正在输入for循环并尝试计算min第一个单词的长度。min(5)没有意义,不是吗?即使可以计算,return也会停止执行该函数(换句话说,不会考虑长度)。

第二个len(x) for x in s.split()是一个生成器表达式,生成句子中所有单词的长度。并将min计算该序列的最小元素。