Python 3中有“foreach”函数吗?

2024-03-28 23:05:17 发布

您现在位置:Python中文网/ 问答频道 /正文

当我遇到可以用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不接受iterable对象,您不能重写它的源代码。

Tags: 函数in名称元素列表fordef情况
3条回答

我看到的每一个“foreach”的出现(PHP,C#,…)与pythons的“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中的list comprehensions完成:

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

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

其他示例:

Python Foreach循环:

array = ['a', 'b']
for value in array:
    print(value)
    # a
    # b

Python For循环:

array = ['a', 'b']
for index in range(len(array)):
    print("index: %s | value: %s" % (index, array[index]))
    # index: 0 | value: a
    # index: 1 | value: b

Python本身没有foreach语句。它在语言中内置了for循环。

for element in iterable:
    operate(element)

如果您真的想,可以定义自己的foreach函数:

def foreach(function, iterable):
    for element in iterable:
        function(element)

顺便说一下,for element in iterable语法来自于the ABC编程语言,这是Python的影响之一。

相关问题 更多 >