Python 列表中的多个最大值
嘿,作为一个新手,我想知道怎么从一个列表中找到多个最大值(也就是说,有不止一个最大值或者长度相同的项)和最小值(情况和最大值一样)。我试过用 max
函数,但它只打印出一个项,min
也是这样。我想要的是根据列表中字符串的长度来找最大值和最小值(比如用 len
)!
这是我到目前为止写的代码
def choice4(filelist):
try:
c4longest=max(filelist,key=len)
print(c4longest,"is the longest item in the list")
4 个回答
0
在编程中,有时候我们需要把一些数据从一个地方传到另一个地方。这个过程就像把水从一个水壶倒到另一个水壶一样。我们可以用不同的方法来实现这个过程,比如使用变量、函数或者其他工具。
有些时候,我们需要确保在传输数据的时候,不会出现错误。就像在倒水的时候,我们要小心不要洒出来一样。为了做到这一点,我们可以使用一些检查和验证的方法,确保数据是正确的。
另外,编程中还有一些特定的规则和约定,就像在生活中我们有交通规则一样。这些规则帮助我们更好地理解和使用编程语言,让我们的代码更容易阅读和维护。
总之,编程就像是一个复杂的拼图游戏,我们需要把不同的部分组合在一起,才能完成一个完整的作品。
In [1]: l = 'Is that what you mean'.split()
In [2]: [word for word in l if len(word) == max(map(len, l))]
Out[2]: ['that', 'what', 'mean']
2
你可以考虑使用排序的方法:
maxed = sorted(inputlist, key=lambda i: len(i), reverse=True)
allmax = list(takewhile(lambda e: len(e) == len(maxed[0]), maxed))
这种方法排序的时间是O(n log n)
,虽然时间稍长,但操作简单,最长的元素都在前面,方便挑选。
如果想要一个O(n)
的解决方案,可以使用循环:
maxlist = []
maxlen = 0
for el in inputlist:
l = len(el)
if l > maxlen:
maxlist = [el]
maxlen = l
elif l == maxlen:
maxlist.append(el)
在这个过程中,maxlist
会被构建并根据需要进行替换,以便只保留最长的元素:
>>> inputlist = 'And so we give a demo once more'.split()
>>> maxlist = []
>>> maxlen = 0
>>> for el in inputlist:
... l = len(el)
... if l > maxlen:
... maxlist = [el]
... maxlen = l
... elif l == maxlen:
... maxlist.append(el)
...
>>> maxlist
['give', 'demo', 'once', 'more']
5
试试这个:
def choice4(filelist): mymax = max(map(len,filelist)) return [a for a in filelist if len(a)==mymax] a = ['joe','andy','mark','steve'] a.extend(a) print choice4(a)