首页 > 解决方案 > 打印人名列表,每个人的名字本身就是一个人名列表

问题描述

所以基本上,当我们输入一个列表时,比如

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

进入函数,它应该在单独的行中打印出每个列表中的元素,中间有一个空格。当每个列表中的元素数量不相等时,我不知道该怎么做。

我也不允许使用任何 for 循环

这是我的代码:

def print_names2(people):
"""Print a list of people's names, which each person's name
   is itself a list of names (first name, second name etc)
"""
    i = 0
    while i < len(people):
        names = list(people[i])
        j = 0
        while j < len(names):
            i += 1
            name = names[j]
            print(name, end=" ")
            j += 1
print_names2([['Bilbo', 'Baggins'], ['Gollum'], ['Tom', 'Bombadil'], 
['Aragorn']])

预期结果:

Bilbo Baggins 
Gollum 
Tom Bombadil 
Aragorn

实际结果:

Bilbo Baggins Tom Bombadil

我应该对我的代码进行哪些更改?

谢谢你。

标签: python

解决方案


尝试更简单的方法。

def print_names(people):
    for i in people:
        print (' '.join(i))

people=[['Bilbo', 'Baggins'], ['Gollum'], ['Tom', 'Bombadil'], ['Aragorn']]
print_names(people)

输出

Bilbo Baggins
Gollum
Tom Bombadil
Aragorn

不使用for循环。

def print_names(people):
    i = 0
    while i < len(people):
        print(' '.join(people[i]))
        i += 1

people=[['Bilbo', 'Baggins'], ['Gollum'], ['Tom', 'Bombadil'], ['Aragorn']]
print_names(people)

推荐阅读