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