0

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
4

3 に答える 3

2

X が整数値を取得する方法

そうではありません。反復しているシーケンスに含まれる連続する値を取得しています。この場合は文字列です。

要素は特定の型である必要はなく、同じ型である必要さえありません。

于 2012-11-22T11:24:19.843 に答える
0

もう少し技術的に言えば、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)

しかし、はるかに良く見えます。

于 2012-11-22T11:56:33.163 に答える