如何在不使用Python中的In关键字的情况下创建For循环

use*_*687 -1 python for-loop keyword

我只是想知道如何在不使用Python中的"in"关键字的情况下使用For循环?

由于"in"关键字测试以查看值是否在列表中,如果值在列表中则返回True,如果值不在列表中则返回False,For循环使用In关键字也是令人困惑的当它也可以使用像"of"这样的词时.

但是,我尝试使用这样的代码:

    for i of range(5):
        print i
Run Code Online (Sandbox Code Playgroud)

它返回语法错误.所以我想知道是否有任何方法可以使用For循环而不使用In关键字,因为它令人困惑.

Gar*_*tty 6

不,没有,它是语言的一部分,无法更改(不修改基础语言实现).

我认为它根本不会混淆,因为语法读起来像英语,并且作为LL(1)语法解析得很好.它还减少了关键字的数量(这很好,因为它为变量命名释放了更多的单词).

许多语言在不同的上下文中重用关键字,Python使用它as来:

import bar as b

with foo() as f:
    ...
Run Code Online (Sandbox Code Playgroud)

3.3 from也是如此:

from foo import bar

def baz(iter):
    yield from iter 
Run Code Online (Sandbox Code Playgroud)

即使Java这样做,extends通常用于为类提供基类,但它也用于指定泛型类型的上限.

class Foo extends Bar {
    void baz(List<? extends Bar> barList) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,即使这是可能的,这也是一个坏主意,因为它会降低其他习惯使用该语言的Python程序员的可读性.

编辑:

由于其他答案已经替代了for循环使用while,我将添加做坏事的最佳方法:

iterable = iter(some_data)
while True:
    try:
        value = next(iterable)
    except StopIteration:
        break
    do_something(value)
Run Code Online (Sandbox Code Playgroud)