Python 3 中是否有“foreach”函数?

新手上路,请多包涵

当我遇到这种情况时,我可以用 javascript 来做,我总是认为如果有 foreach 函数会很方便。 foreach 我的意思是下面描述的功能:

 def foreach(fn,iterable):
    for x in iterable:
        fn(x)

他们只是在每个元素上都这样做并且没有产生或返回某些东西,我认为它应该是一个内置函数并且应该比使用纯 Python 编写它更快,但我没有在列表中找到它,或者它只是叫了另一个名字?或者我只是在这里错过了一些点?

也许我错了,因为在 Python 中调用函数的成本很高,对于这个例子来说绝对不是一个好习惯。而不是一个输出循环,该函数应该在它的主体侧执行循环,如下所示,这在许多 python 的代码建议中已经提到:

 def fn(*args):
    for x in args:
       dosomething

但基于以下两个事实,我认为 foreach 仍然受欢迎:

  1. 在正常情况下,人们只是不关心性能
  2. 有时 API 不接受可迭代对象,您无法重写其源代码。

原文由 user2003548 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 816
1 个回答

我见过的每一次“foreach”(PHP、C#、…)都与 Python 的“for”语句基本相同。

这些或多或少是等价的:

 // PHP:
foreach ($array as $val) {
    print($val);
}

// C#
foreach (String val in array) {
    console.writeline(val);
}

// Python
for val in array:
    print(val)

所以,是的,python 中有一个“foreach”。名为“为”。

您所描述的是“数组映射”功能。这可以通过 python 中的 列表理解 来完成:

 names = ['tom', 'john', 'simon']

namesCapitalized = [capitalize(n) for n in names]

原文由 Jo Are By 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题