2013-04-26 40 views
0

我想使用while循環從python的列表中讀取,但我似乎無法得到它。我不斷收到列表索引超出範圍錯誤。從列表中讀取

這是列表:

names = [['Bilbo', 'Baggins'], ['Gollum'], ['Tom', 'Bombadil'], ['Aragorn']] 

而不是使用for循環:關於這樣的事情

for person in people:  
    to_print = "" 
    for name in person: 
     to_print += name + " " 
    print(to_print) 
+3

請出示你的代碼 – jamylak 2013-04-26 01:40:01

+3

普羅蒂普:不要使用while循環從列表中獲取數據。使用for循環:'name for name:print(name [0])' – 2013-04-26 01:41:37

+1

記住索引在0和'len(names)-1'之間。 – Elazar 2013-04-26 01:43:54

回答

1

for循環代碼等效while循環的版本是:

>>> i = 0 
>>> while i < len(names): 
     j = 0 
     to_print = "" 
     while j < len(names[i]): 
      to_print += names[i][j] + " " 
      j += 1 
     print(to_print) 
     i += 1 


Bilbo Baggins 
Gollum 
Tom Bombadil 
Aragorn 

和更好的版本for循環代碼是:

>>> for person in names: 
     print(' '.join(person)) 


Bilbo Baggins 
Gollum 
Tom Bombadil 
Aragorn 
+0

好的真棒謝謝。我現在可以確切地知道我哪裏錯了。非常感謝喲 – user2322049 2013-04-26 02:00:46

0

如何?

for name in names: 
    for subname in name: 
     print(subname) 
+0

我需要使用while循環。原來的東西是從循環轉換爲while循環 – user2322049 2013-04-26 01:52:56

+2

@ user2322049你甚至沒有解釋你正在嘗試做什麼 – jamylak 2013-04-26 01:53:21

1

要使用Python列表,您不需要索引。

for bunch_of_names in names: 
    if len(bunch_of_names) > 1: # e.g. bunch_of_names = ['Bilbo', 'Baggins'] 
     print 'First name:', bunch_of_names[0], 'Last name: ', bunch_of_names[1] 
    else: # e.g. ['Aragorn'] 
     print 'Name: ', bunch_of_names[0] # the only one