我试图找到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?'
答案 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)
这是一种方法,只需使用lambda
或key=len
而for loop
或list 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';
}