相关疑难解决方法(0)

使用'key'和lambda表达式的python max函数

我来自OOP背景并试图学习python.我使用的max函数使用lambda表达式返回列表中Player具有最大值的类型的实例.totalScoreplayers

def winner():
    w = max(players, key=lambda p: p.totalScore)
Run Code Online (Sandbox Code Playgroud)

该函数正确返回Player具有最大值的类型的实例totalScore.我对以下三件事感到困惑:

  1. max功能如何运作?它正在采取什么样的论据?我查看了文档,但没有理解.
  2. keymax函数中关键字的用途是什么?我知道它也用在sort功能的上下文中
  3. lambda表达式的含义?怎么看?他们是如何工作的?

这些都是非常无趣的概念性问题,但会帮助我理解语言.如果您可以举例解释,这将有所帮助.谢谢

python lambda function

154
推荐指数
6
解决办法
20万
查看次数

列表的查找方式

我正在写一个函数,用于计算数字列表的模式。

如果输入为[52, 99, 37, 86, 99, 99, 99, 37, 37, 37],则输出应为[37, 99]。如您所见,较小的数字应该排在第一位,但是我的代码不会这样做。有人可以修复我的代码吗?

def mode(L):
    most = max(list(map(L.count, L)))
    return list(set(filter(lambda x: L.count(x) == most, L)))
Run Code Online (Sandbox Code Playgroud)

python

1
推荐指数
1
解决办法
94
查看次数

不使用 collections.Counter 来计算出现次数

我正在尝试检索列表中最频繁和不太频繁的元素。

frequency([13,12,11,13,14,13,7,11,13,14,12,14,14])
Run Code Online (Sandbox Code Playgroud)

我的输出是:

([7], [13, 14])
Run Code Online (Sandbox Code Playgroud)

我尝试过:

import collections
s = [13,12,11,13,14,13,7,11,13,14,12,14,14]
count = collections.Counter(s)
mins = [a for a, b in count.items() if b == min(count.values())]
maxes = [a for a, b in count.items() if b == max(count.values())]
final_vals = [mins, maxes]
Run Code Online (Sandbox Code Playgroud)

但我不想使用该collections模块并尝试更面向逻辑的解决方案。
你能帮我在没有集合的情况下做到这一点吗?

python counting

0
推荐指数
1
解决办法
5610
查看次数

标签 统计

python ×3

counting ×1

function ×1

lambda ×1