在列表中搜索最长的字符串

时间:2014-10-28 21:28:29

标签: python list search max

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

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

我试图做这样的事情:

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

因此,它意味着要浏览列表并将每个项目与整数max_l进行比较。一旦找到该列表项,就意味着打印它。但事实并非如此。我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

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

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

max需要一个'密钥'您可以为其分配函数的参数(在本例中为len,另一个内置函数),该函数应用于myList中的每个项目。

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

来自max docstring:

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 docstring:

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