找到最长的单词错误?

时间:2015-07-02 00:43:47

标签: python string list split word

我试图找到Python中最长的单词,但我得到了错误的结果。下面的代码是以交互模式完成的。我应该收到商品' (10个字符)作为最长的单词/字符串,但我得到了欢迎' (7个字符)代替。

 str = 'welcome to the merchandise store' #string of words
 longest = []                             #empty list
 longest = str.split()                    #put strings into list
 max(longest)                             #find the longest string
 'welcome'                                #Should've been 'merchandise?'

4 个答案:

答案 0 :(得分:5)

它按字母顺序排序字符串而不是长度,你需要的是:

max(longest, key=len)

让我进一步澄清一下。在Python中,字符串的默认比较是按字母顺序排列的。这意味着对于所有意图和目的,“aa”将小于“abc”(python2中的cmp和python2 / 3中的<)。如果在没有键的情况下在列表上调用max,则会使用默认比较进行比较。如果你输入一个键功能,那么它将比较键而不是值。另一个选项(仅限python2)是max的cmp参数,它采用类似cmp的函数。我不建议使用这种方法,因为它最终会像cmp=lambda x,y: len(x)-len(y)那样只比key=len更不易读,而且在python3中不受支持。

如果您对使用密钥有任何疑问,我建议您阅读this特别说明(7),其中包括cmp和list.sort的密钥,它们以相同的方式使用它们。

答案 1 :(得分:0)

您也可以这样做:

str = 'welcome to the merchandise store'
sorted(str.split(), key=len)[-1]

拆分它,按长度排序,然后取最长的(最后一个)。

答案 2 :(得分:0)

将您的str.split()更改为str.split(" ")

然后,

max = []
for x in str.split(" "):
    if len(x) > len(max[0]):
        max = []
        max.append(x)
    elif len(x) == len(max[0]):
        max.append(x)

答案 3 :(得分:-1)

这是一种方法,只需使用lambdakey=lenfor looplist comprehension只使用str = 'welcome to the merchandise store' longest = [] longest = str.split() lst = [] for i in longest: x = len(i) lst.append(x) y = [a for a in longest if max(lst)== len(a)] print y[0] merchandise

print (y[0])

输出:

<header>

这是在Python 2中,在Python 3中 function addtext(){ document.getElementById('displaytext').innerHTML='THis is a text'; }