【问题标题】:Searching a list for the longest string在列表中搜索最长的字符串
【发布时间】:2014-10-28 21:28:28
【问题描述】:

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

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

我正在尝试做这样的事情:

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

因此,它意味着遍历列表并将每个项目与整数 max_l 进行比较。一旦找到该列表项,它就意味着打印它。但它没有。我做错了什么?

【问题讨论】:

  • 我不知道你在这里要做什么,但是最长的长度可以用max(mylist, key=len)找到。

标签: python list search max


【解决方案1】:

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

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

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

max 接受一个“key”参数,您可以为其分配一个函数(在本例中为 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']

现在使用最大值:

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

【讨论】:

  • 我觉得有点傻。我试过了,但它返回了奇怪的值。
  • 如果你有一个像我上面使用的那样的字符串列表,这应该可以正常工作。您是如何准确生成列表的?另外,什么样的奇怪值?请看我的编辑
  • 如果仍然无法正常工作,请告诉我,或许可以在此处的 cmets 中(如果不是太长)或原始帖子的末尾发布您获得的输出。跨度>
猜你喜欢
  • 2016-04-21
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多