重写一小段python代码

时间:2010-08-18 10:32:28

标签: python refactoring

我有许多小代码看起来像:

for it in <iterable>:
  if <condition>:
     return True/False

有没有办法可以用lambda表达式重写这段代码?我知道我可以用一个小方法/函数来解决它,但是如果可以的话,我正在寻找一些lambda事件。

4 个答案:

答案 0 :(得分:6)

使用内置any function

e.g。

any(<condition> for it in <iterable>)      # return True on <condition>

答案 1 :(得分:1)

除了其他人所说的,反之亦然:

for it in <iterable>:
  if <condition>:
     return False
return True

使用all():

b = all(<condition> for it in <iterable>)

答案 2 :(得分:0)

如果True中的任何对象等于it,这是一个返回2的简单示例。使用map函数:

any(map(lambda x: x==2, it))

更改lambda表达式以反映您的情况。

另一个好方法是将any与列表理解结合使用:

any([True for x in it if x==2])

或者,生成器表达式:

any(x==2 for x in it)

答案 3 :(得分:0)

如果要检查可以使用的每个iterable项的条件 listcomprehensions to this

b = [ x == whatever for x in a ]

如果你只需要知道是否有一个元素,你可以将它与any结合起来 为你的病情而言,这是真实的。

b = any(x == whatever for x in a)