x整数値を取る方法を誰かが説明できますか?xin 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整数値を取る方法を誰かが説明できますか?xin 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:のイテレータを要求します。aiter(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)
しかし、はるかに良く見えます。