x
整数値を取る方法を誰かが説明できますか?x
in for loop "for x in a"を直接使用しています。コンパイラはx
、リスト内の文字列を表すそれをどのように認識しますか?
>>> # Measure some strings:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print x, len(x)
...
cat 3
window 6
defenestrate 12
x
整数値を取る方法を誰かが説明できますか?x
in for loop "for x in a"を直接使用しています。コンパイラはx
、リスト内の文字列を表すそれをどのように認識しますか?
>>> # Measure some strings:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print x, len(x)
...
cat 3
window 6
defenestrate 12
X が整数値を取得する方法
そうではありません。反復しているシーケンスに含まれる連続する値を取得しています。この場合は文字列です。
要素は特定の型である必要はなく、同じ型である必要さえありません。
もう少し技術的に言えば、for
ループはイテラブルによって提供されるイテレータを反復処理します。
イテラブルはリスト、文字列、タプルなどであり、イテレータは反復に使用されるオブジェクトです。
では、 の場合とまったく同じように、for i in a:
のイテレータを要求します。a
iter(a)
これが起こる
the_iterator = a.__iter__()
a
が発生__getitem__()
するまで、連続して成長するインデックスでこれを呼び出しますIndexError
。このインタレータは、イテレータが使い果たされて が発生するまで、各ループ実行で.next()
( .__next__()
Python 3 で)呼び出されますStopIteration
。
つまり、言い換えれば:
for x in a: print x, len(x)
内部的には次のように動作します
a_iter = iter(a)
while True:
try: x = next(a)
except StopIteration: break
print x, len(x)
しかし、はるかに良く見えます。