2012-11-22 170 views
0

任何人都可以解釋x如何取整數值。我們直接使用x for循環「for x in a」 編譯器如何識別它,x代表列表中的字符串?Python中的循環變量

>>> # Measure some strings: 
... a = ['cat', 'window', 'defenestrate'] 
>>> for x in a: 
... print x, len(x) 
... 
cat 3 
window 6 
defenestrate 12 
+0

'len'函數內部檢查x – avasal

+1

這個代碼給出了一個縮進錯誤 – none

+1

問題是?你通過一個字符串數組循環,因此循環中的每個項都是一個字符串。 – Eric

回答

4

for作品在不同比Python作品在語言,如C.相反數/下一個數值和檢查結束條件,你通常會在C:

for (i=0; i<=max; i++) do_something(); 

它迭代過在容器(其名稱的in之後被引用)中的所有元素:

for item in iterable: 
    do_something(item) 

及其精確行爲取決於CONT的類型(iterable)使用;在列表或元組中,它將從第一個元素開始,然後一次一個元素地移動列表/元組,直到達到最終元素。每個元素將被一個名稱引用(本例中爲item),以便它可以在循環體中進行操作。

在字典中,for將遍歷字典的鍵(以未指定的順序),因此item將包含字典的鍵。

在字符串中,它會逐個遍歷字符串的字母。等

+0

「按升序移動列表」有點令人誤解。 – Tim

+0

@Tim:好點。編輯。 –

+2

它可能會也可能不會幫助指出,這通常被明確稱爲'foreach'循環 –

2

X是如何採取整數值

它不是。它正在迭代你正在迭代的序列中包含的連續值,這就是字符串。

元素不必是特定類型的,它們也不甚至必須是相同的類型。

0

更技術一點,在由迭代提供一個迭代的for循環迭代。

可迭代可以是一個列表,一個字符串,一個元組等,迭代器是用於迭代的對象。

使用for i in a:,您請求迭代器爲a,完全如您對iter(a)所做的那樣。

這種情況

  • 通過調用the_iterator = a.__iter__()
  • 或者,如果不工作,但a__getitem__(),直到IndexError提高與次生長指標調用此。

此迭代符,然後調用(在Python 3 .__next__())在每次循環運行.next()直到迭代器被耗盡,並提出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) 

,但看起來更漂亮。