【发布时间】:2018-07-03 00:04:03
【问题描述】:
我可以在 python 中使用 lambda 函数或更 Python 的表达式来实现计数器吗?
这是我的代码:
counter = 0
if 0 < arrival_time:
counter += 1
else:
pass
这是我尝试过的:
count_late = lambda x, arrival_time: x+=1 if 0 < arrival_time else pass
counter_late(counter, arrival_time)
我缺少什么或如何改进此代码?
【问题讨论】:
-
最后一件事:当人们谈论“使用函数的计数器”时,他们通常是 Lisp 类型的人,他们在寻找类似 @987654322@ 的东西。但是,如果这就是您的目标,请查看其正下方的第二个版本以获得更 Pythonic 的解决方案。 (实例和闭包是双重的,但这并不意味着没有理由更喜欢其中之一——它几乎总是以一种或另一种方式更具可读性。)
-
我建议对您的代码进行一个小的改进:您不需要为每个
if语句添加一个else语句。删除else: pass不会影响代码的运行方式。它可以节省空间,在某些情况下还可以让您头疼。 -
@abarnert 在我处理计数器时使用类更好吗?或者只是启动一个变量计数器和循环?感谢代码
-
@may 这完全取决于你在做什么。如果你想要一个封装一些状态并提供不透明方法来更新它的计数器,就像我在上面链接中给出的示例一样,那么你需要一个类。如果您只想继续添加到 int,那么您可能想要一个返回新值的纯函数,或者一个更新全局变量的函数;无论哪种方式都不需要上课。没有看到你的设计的其余部分,很难说你想要哪一个。
-
你有什么特别的理由想用
lambda来做吗?
标签: python if-statement lambda counter