2014-10-28 212 views
0

我有一个列表,当用户输入一个字符串时生成:像这样。它将采取每个单词并将其附加到列表中。搜索最长的字符串列表

我有一个名为max_l的变量,它查找列表中最长的字符串的长度。

我试图做这样的事情:

while max_l == len(mylist[x]): 
    print(mylist[x]) 
    a=a+1 

所以,它的意思是经过列表,每个项目与整数max_l比较。一旦找到该列表项目,就意味着打印它。它并没有。我究竟做错了什么?

+2

什么是'x'? '了'? – jonrsharpe 2014-10-28 21:29:49

+1

我不知道你在这里做什么,但最长的长度可以用'max(mylist,key = len)'来找到。 – 2014-10-28 21:34:39

回答

2

如果你要搜索的最长的字符串列表,你可以使用内置max()功能:

myList = ['string', 'cat', 'mouse', 'gradient'] 

print max(myList, key=len) 
'gradient' 

max需要一个“关键”参数,你可以指定功能(在这种情况下len,另一个内置函数),它应用于myList中的每个项目。

在这种情况下,对于myList中的每个字符串len(string)返回的最大结果(长度)是您最长的字符串,并且由max返回。

max文档字符串:

max(iterable[, key=func]) -> value 
max(a, b, c, ...[, key=func]) -> value 

With a single iterable argument, return its largest item. 
With two or more arguments, return the largest argument. 

len文档字符串:

len(object) -> integer 

Return the number of items of a sequence or mapping. 

生成列表从用户输入:

在回答您的通讯恩,我想我会补充一点。这是做这件事:

user = raw_input("Enter a string: ").split() # with python3.x you'd be using input instead of raw_input 

Enter a string: Hello there sir and madam # user enters this string 
print user 
['Hello', 'there', 'sir', 'and', 'madam'] 

现在使用max:

print max(user, key=len) 
'Hello' # since 'Hello' and 'madam' are both of length 5, max just returns the first one 
+0

我觉得有点愚蠢。我尝试过,但它返回奇怪的值。 – lmsavk 2014-10-28 23:07:03

+0

如果你有一个像我上面使用的字符串列表,这应该可以正常工作。你如何准确地生成你的列表?另外,什么样的奇怪值?请参阅我的编辑 – Totem 2014-10-28 23:57:47

+0

如果它仍然无法正常工作,请让我知道,并可能会将您的输出内容发布到此处的评论中(如果它不太长)或者在原始文章结尾处。 – Totem 2014-10-29 00:07:15