如何从零开始学Python:(5)如何处理列表中嵌套多个列表?
一、创建嵌套列表时
各个列表项之间用逗号”,”隔开,每个列表的起始位置,都要用中括号“[”开始,结束时,对应用“]”结束。
注意:有多少个列表,对应就有多少个中括号”[]”。
例如:《Head First Python(中文版)》书中的例子:
movies=["The HolyGrail",1975,"Terry Jones &Terry Gilliam",91,
["GrahamChapman",
["Michael Palin","JohnCleese","Terry Gilliam","Eric Idle","TerryJones"]]]
二、访问列表数据时
同样,也是通过中括号记法来访问。例如,
>>> print(movies[4][1][3])
Eric Idle
在这里,可能有些人不明白,为什么是movies[4][1][3]?
movies[4]是第二个内列表的起始位置,而该列表本身又是嵌套在另外一个列表中,所以是movies[4][1]。
而movies[4][1][3],则是指第三个列表的第四个列表项,所以,在这里输出的是“Eric Idle”。
三、迭代处理列表时
使用for循环处理,这时候只能分别输出外列表的各个数据项,而嵌套的列表则会原样输出。因为对于外列表来说,内列表仅仅是外列表中的一个列表项。
例如:《Head First Python(中文版)》书中的例子:
>>> movies=["The HolyGrail",1975,"Terry Jones &Terry Gilliam",91,
["GrahamChapman",
["Michael Palin","JohnCleese","Terry Gilliam","Eric Idle","TerryJones"]]]
>>> for each_item in movies:
print(each_item)
The Holy Grail
1975
Terry Jones &Terry Gilliam
91
['Graham Chapman', ['Michael Palin', 'JohnCleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]
这时侯,需要先处理这个列表,检查这个列表项本身是不是另外一个列表。
四、在列表中查找列表时
第一种方法:使用for循环与if……else……模式处理,直至输出所有的列表中不再含有列表。具体步骤:
例如:《Head First Python(中文版)》书中的例子:
>>> movies=["The Holy Grail",1975,"TerryJones &Terry Gilliam",91,
["GrahamChapman",
["Michael Palin","JohnCleese","Terry Gilliam","Eric Idle","TerryJones"]]]
>>> 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
第二种方法:使用函数处理。具体步骤:
例如:《Head First Python(中文版)》书中的例子:
>>> movies=["The HolyGrail",1975,"Terry Jones &Terry Gilliam",91,
["GrahamChapman",
["Michael Palin","JohnCleese","Terry Gilliam","Eric Idle","TerryJones"]]]
>>> def print_lol(the_list):
for each_item in the_list:
if isinstance(each_item,list):
print_lol(each_item)
else:
print(each_item)
>>> print_lol(movies)
The Holy Grail
1975
Terry Jones &Terry Gilliam
91
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones
以上,是如何处理列表中嵌套多个列表的方法。看完一个文科生,一个职场女性,一个小白的总结后,你知道该怎么做了吗?