从列表中读取

时间:2013-04-26 01:39:25

标签: python list

我正在尝试使用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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

while循环代码的等效for循环版本为:

>>> 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

答案 2 :(得分:0)

这样的事情怎么样?

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