我有一个用户输入字符串时生成的列表:像这样。它将采用每个单词并将其附加到列表中。
我有一个名为max_l的变量,它找到列表中最长字符串的长度。
我试图做这样的事情:
while max_l == len(mylist[x]):
print(mylist[x])
a=a+1
因此,它意味着要浏览列表并将每个项目与整数max_l进行比较。一旦找到该列表项,就意味着打印它。但事实并非如此。我做错了什么?
答案 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