什么是JavaScript的Array.prototype.some的python等价物?

sha*_*und 13 javascript python arrays

python是否与JavaScript的Array.prototype.some/every等效?

简单的JavaScript示例:

var arr = [ "a", "b", "c" ];
arr.some(function (element, index) {
    console.log("index: " + index + ", element: " + element)
    if(element === "b"){
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

将输出:

index: 0, element: a
index: 1, element: b
Run Code Online (Sandbox Code Playgroud)

下面的python似乎功能相同,但我不知道是否有更"pythonic"的方法.

arr = [ "a", "b", "c" ]
for index, element in enumerate(arr):
    print("index: %i, element: %s" % (index, element))
    if element == "b":
        break
Run Code Online (Sandbox Code Playgroud)

Ama*_*dan 17

Python有all(iterable)any(iterable).因此,如果您创建一个可以执行所需操作的生成器或迭代器,则可以使用这些函数对其进行测试.例如:

some_is_b = any(x == 'b' for x in ary)
all_are_b = all(x == 'b' for x in ary)
Run Code Online (Sandbox Code Playgroud)

它们实际上是通过它们的代码等价物在文档中定义的.这看起来很熟悉吗?

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
Run Code Online (Sandbox Code Playgroud)

  • 当然,Python 的名字更好、更短、更符合逻辑。“一些”不太正确。 (2认同)