我尝试打印嵌套列表时出错:

时间:2012-05-23 04:59:15

标签: python windows python-3.x

我是Python的新手,我正在通过阅读“ Head first Python ”一书来学习它。

我怀疑的是,当我想要打印嵌套列表时,我没有得到正确的输出,如书中所示

  
    
      

movies = [“The Holy Grail”,1975,“Terry Jones& Terry Gilliam”,91,[“Graham Chapman”,[“Michael Palin”,“John Cleese”,“Terry Gilliam”,“Eric Idle “,”特里琼斯“]]]

    
  

- (书中给出的代码)

>>> for each_item in movies:
if isinstance(each_item, list):
    for nested_item in each_item:
        if isinstance(nested_item, list):
            for deeper_item in nested_item:
                print(deeper_item)
        else:
           print(nested_item)
else:
    print(each_item)

- (书中输出)

The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones

- (但我只得到以下输出)

Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones
['Graham Chapman', ['Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]

-

请帮助我,我已经尝试了我能想到的一切。提前谢谢。

4 个答案:

答案 0 :(得分:1)

由于缩进错误,显示的代码无法运行。第一个if语句应该缩进。 (如果你得到了你已经显示的结果,你可能会剪切并粘贴它而不调整本网站上的缩进)。

movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91, ["Graham Chapman", ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]

for each_item in movies:
    if isinstance(each_item, list):
        for nested_item in each_item:
            if isinstance(nested_item, list):
                for deeper_item in nested_item:
                    print(deeper_item)
            else:
                print(nested_item)
    else:
        print(each_item)
在Python提示符后粘贴时,

适用于我。当你最后两行缩进4个小于这个空格时,你的输出就是你得到的。

print(nested_item)也只缩进3个空格,其余的(缩进时)使用4个空格。

答案 1 :(得分:0)

最终else错误缩进。它必须与第一个if处于同一级别,而不是第一个for

答案 2 :(得分:0)

使用您的代码,我得到了您想要的内容。请检查缩进。

for item in movies:
    if isinstance(item,list):
        for nested_item in item:
            if isinstance(nested_item,list):
                for deep_item in nitem:
                    print deep_item
            else:
                print nested_item
    else:
        print item

答案 3 :(得分:0)

对我来说工作得很好:)。

movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91, ["Graham Chapman", ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]

for each_item in movies:
    if isinstance(each_item, list):
        for nested_item in each_item:
            if isinstance(nested_item, list):
                for deeper_item in nested_item:
                    print(deeper_item)
            else:
               print(nested_item)
    else:
        print(each_item)

我看不出为什么它会为你产生那种输出。你直接在翻译中输入了吗?也许初始列表不知何故搞砸了。尝试将此代码复制到IDLE中,看看是否有任何奇怪的事情发生。