for +isinstance处理列表问题

qq_26988917 2018-04-17 09:41:24
代码如下:
movies = ["The Holy Grail",1975,"Terry Jones & Terry Gilliam",91,
[ "Graham Chapman","test",
["Michael Palin","John Cleese","Terry Gilliam","Eric Idle","Terry Jones"]]]

for each_item in movies:
if isinstance(each_item,list):
for wested_item in each_item :
print (wested_item)


else:
print(each_item)

结果:
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
test
['Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']

想不懂为什么第三个列表会处理不了...希望各位可以指导一下 谢谢
...全文
850 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
张凯飞 2018-04-18
  • 打赏
  • 举报
回复
嵌套了三层列表,你得代码只取了外两层的元素,需要再加一层循环,提取最里层的列表
混沌鳄鱼 2018-04-17
  • 打赏
  • 举报
回复

>>> movies = ["The Holy Grail",1975,"Terry Jones & Terry Gilliam",91,
            [ "Graham Chapman","test",
               ["Michael Palin","John Cleese","Terry Gilliam","Eric Idle","Terry Jones"]]]
>>> flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
>>> flatten(movies)
['The Holy Grail', 1975, 'Terry Jones & Terry Gilliam', 91, 'Graham Chapman', 'test', 'Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']
>>> from tkinter import _flatten
>>> _flatten(movies)
('The Holy Grail', 1975, 'Terry Jones & Terry Gilliam', 91, 'Graham Chapman', 'test', 'Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones')
>>> 

oyljerry 2018-04-17
  • 打赏
  • 举报
回复
判断还要加一层 for each_item in movies: if isinstance(each_item,list): for wested_item in each_item : if isinstance(wested_item,list): for xxx in wested_item: print(xxx) else: print (wested_item) else: print(each_item)

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧