2017-01-25 67 views
-1

當「詮釋」對象不是可迭代所以我有電子郵件地址的列表,我想打印出來,所以我試圖做這樣的事情:類型錯誤:打印出的清單

for i in emails: 
    print emails[i] 

但是,當我這樣做,我得到這個錯誤:

TypeError: 'int' object is not iterable 

,因爲當我寫這是奇怪的對我說:

for i in emails: 
    print emails[1] 

它打印出列表中的第一封電子郵件,如果它可以打印出來,當我指定一個數字時,爲什麼我不能打印時,我將它設置爲「我」?

+1

因爲'i'成爲列表中的第一個元素,而不是一個計數器 –

+2

該代碼片段的行爲方式完全取決於您未顯示的「emails」類型。請儘量減少您的程序到儘可能最小的**完整**程序,以顯示錯誤。有關更多信息,請參見[mcve]。 –

+0

使用有意義的名稱。 Python for for循環中的循環變量不是一個索引,所以將其命名爲'i'是沒有意義的。事實上,您將它命名爲索引使您誤以爲它是一個索引。但這不是神奇的索引,因爲你把它命名爲「我」。 – kindall

回答

2
for email in emails: 
    print email 

幸運的是這不是JavaScript的5 ...

在JS 6會是這樣的:

for (email of emails) { 
    console.log (email); 
} 
+1

JS在這裏如何相關? –

+0

OP在JS中使用「in」的含義。許多程序員用JS編寫了一個網站,因爲現在JS真的是商品,所以我猜想這是OP的混亂來自哪裏。認爲明確提及這種差異是很好的,因爲否則它可能會令人困惑。 –

0

我想通了的人誰都會有我需要同樣的問題轉換爲str,並使用我在範圍w /列表的長度:

for i in range (0,len(emails)): 
    print (str(emails[i])) 
+0

用'range'做這件事非常非Pythonic。你應該像使用''在電子郵件中使用''。 – kindall