我应该编写一个函数名shortest(),它在字符串列表中查找最短字符串的长度。
函数shortest()接受一个参数: 1.字符串列表,textList
函数shortest()应该返回文本List中最短字符串的长度。您可以假设textList包含至少一个元素(字符串)。
例如,以下是正确的输出:
>>> beatleLine = ['I', 'am', 'the', 'walrus']
>>> print(shortest(beatleLine))
1
-
当我写完shortest()函数时,我提出了这个解决方案
def shortest(textList):
return len(max(textList))
string = ['Hey', 'Hello', 'Hi']
print(shortest(string))
但我很困惑为什么max函数返回最短函数的长度而不是min函数。
如果我将max更改为min,则返回最大值。几乎看起来好像最小和最大切换。
我正在使用Python 3.4并在IDLE上运行它。
答案 0 :(得分:4)
max
返回可迭代中的最大项。由于您没有提供任何key
函数来比较谁是largest
,它将返回字典顺序中最大的元素:
>>> max(['I', 'am', 'the', 'x', 'walrus'])
'x'
您需要告诉max
它将使用哪个关键功能来比较决定谁是最大的元素:
>>> max(['I', 'am', 'the', 'walrus', 'x'], key=len)
'walrus'
话虽如此:
>>> def shortest(textList):
... return len(min(textList, key=len))
使用列表推导或map
的替代方案:
>>> min(len(text) for text in textList)
-
>>> min(map(len, textList))
答案 1 :(得分:0)
如果您将字符串本身作为函数进行比较(即对列表进行排序并显示它),您会看到他们以特定的方式对它们进行排序,从而得出您看到的结果。
您希望使用key
参数传递一个函数,该函数将给出项目的长度,而不是使用项目本身。