-1

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

由于“in”关键字测试值是否在列表中,如果值在列表中则返回 True,如果值不在列表中则返回 False,For 循环也使用 In 关键字似乎令人困惑什么时候它也可以使用像“of”这样的词。

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

    for i of range(5):
        print i

它返回一个语法错误。所以我想知道是否有任何方法可以在不使用 In 关键字的情况下使用 For 循环,因为它令人困惑。

4

3 回答 3

6

不,没有,它是语言的一部分,无法更改(无需修改底层语言实现)。

我认为这根本不会令人困惑,因为语法读起来像英语,并且可以很好地解析为 LL(1) 语法。它还减少了关键字的数量(这很好,因为它为变量命名腾出了更多的词)。

许多语言在不同的上下文中重用关键字,Python 这样做是as为了:

import bar as b

with foo() as f:
    ...

3.3 也这样做from

from foo import bar

def baz(iter):
    yield from iter 

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

class Foo extends Bar {
    void baz(List<? extends Bar> barList) {
        ...
    }
}

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

编辑:

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

iterable = iter(some_data)
while True:
    try:
        value = next(iterable)
    except StopIteration:
        break
    do_something(value)
于 2013-01-18T14:17:12.470 回答
1

不,尽管您可以改用 while 循环:

some_list = range(5)
while some_list:
    print some_list.pop()

就我个人而言,我不明白为什么它不清楚,听说过同音词吗?http://en.wikipedia.org/wiki/Homonym

于 2013-01-18T14:19:41.000 回答
0

你可以这样做:

iter = len(list)
loop = True
while loop:
  if iter == 0:
    loop = False
  else:
    do_something(list[iter])
    iter =- 1
return 0

愚蠢,但可行;)

于 2013-01-18T14:31:49.740 回答