关于《Head First Python》一书中print_lol()函数的思考
关于《Head First Python》一书中print_lol()函数的思考
在《Head First Python》第一章中,讲述到Python处理复杂数据(以电影数据列表为例),首先将电影数据创建为Python列表,由于Python的变量标识符没有类型,列表中的每一个数据项可以是任何类型的数据,甚至可以是另外一个列表,并且可以无限嵌套。下面开始print()和print_lol()的表演。
1 列表 movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91, 2 3 ["Graham Chapman", 4 5 ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]
step1(使用数据偏移量进行列表内数据的精准查找):
1 print(movies[4][1][3])
输出结果为:

step2(使用一层print()对整个列表进行输出):
1 print(movies)
输出结果为:

step3(使用print()加上一层for循环对整个列表进行输出):
1 for i in movies: 2 print(i)
输出结果为:

step4(使用print()加上两层for循环加上一个if else对整个列表进行输出):
1 for i in movies: 2 if isinstance(i,list): 3 for j in i: 4 print(j) 5 else: 6 print(i)
输出结果为:

step5(使用print()加上三层for循环加上两个if else对整个列表进行输出):
1 for i in movies: 2 if isinstance(i,list): 3 for j in i: 4 if isinstance(j,list): 5 for k in j: 6 print(k) 7 else: 8 print(j) 9 else: 10 print(i)
输出结果为:

step6(多层嵌套实在是太麻烦了,试试构造函数然后递归,祭出今天的重场戏print_lol()):
1 首先定义函数: 2 def print_lol(the_list): 3 for i in the_list: 4 if isinstance(i,list): 5 print_lol(i) 6 else: 7 print(i) 8 9 然后使用print_lol()来对movies列表进行输出,即print_lol(movies) 10 输出结果为:

今天加班太晚了,有点累了,那么就将关于print_lol()函数不断趋于完善的过程的思考放在明天的博客中,要努力奋斗,同时晚安好梦。