我是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']]
-
请帮助我,我已经尝试了我能想到的一切。提前谢谢。
答案 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中,看看是否有任何奇怪的事情发生。