当我遇到这种情况时,我可以使用javascript做到这一点,我一直认为如果有一个foreach
功能会很方便。通过foreach,我的意思是下面描述的功能:
def foreach(fn,iterable):
for x in iterable:
fn(x)
他们只是在每个元素上执行它,而不产生或返回任何东西,我认为它应该是一个内置函数,并且应该比使用纯Python编写它要快,但我没有在列表中找到它,或者它只是叫另一个名字?还是我在这里想念一些要点?
也许我弄错了,导致在Python中调用函数的成本很高,绝对不是该示例的好习惯。该函数应该在其主体看起来像下面这样的循环中进行循环,而不是在out循环中进行下面的循环,这在许多python的代码建议中已经提到:
def fn(*args):
for x in args:
dosomething
但基于以下两个事实,我认为foreach仍然受欢迎:
- 通常情况下,人们只是不在乎性能
- 有时,API不接受可迭代对象,因此您无法重写其源代码。
for
目的。
list.each(func)
比for item in list: func(item)
IMO 干净。问题是,Python的做替换样功能的最爱的一个好工作map()
,并filter()
与列表理解它简单地延长其内置的for
和if
(这是均匀和可读性)和特定的.each()
可能去对抗。
sum(0 for _ in map(f, seq))
是一种可读的解决方法。
for
循环有什么问题?