-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 に答える