0

我是 Python 新手,我通过阅读《Head first Python》一书来学习它。

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

电影= [“圣杯”,1975,“特里琼斯和特里吉列姆”,91,[“格雷厄姆查普曼”,[“迈克尔佩林”,“约翰克莱斯”,“特里吉列姆”,“埃里克空闲”,“特里琼斯"]]]

--(书中给出的代码)

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

4 回答 4

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 个空格。

于 2012-05-23T05:27:05.777 回答
0

最后else是错误的缩进。它必须与第一名处于同一水平if,而不是第一名for

于 2012-05-23T05:13:15.863 回答
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
于 2012-05-23T05:15:38.343 回答
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 中,看看是否发生了任何奇怪的事情。

于 2012-05-23T05:17:54.673 回答