一、创建嵌套列表时
各个列表项之间用逗号”,”隔开,每个列表的起始位置,都要用中括号“[”开始,结束时,对应用“]”结束。
例如:《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……模式处理,直至输出所有的列表中不再含有列表。具体步骤:
跟其他列表一样,先使用 for 循环处理。
使用 if 检查当前的列表项是不是一个列表。
记住一个 BIF:isinstance():允许检查某个特定标识符是否包含某个特定类型的数据,在这里,有固定的类型,并且条件测试后面,紧跟冒号”:”。
如果是一个列表,需要使用 for 循环再次进行处理,这时候,内循环需要赋予一个新的目标标识符。
注意:有多少个列表,就要使用 for 循环处理多少次,并赋予多少个目标标识符。
依次进行完 for 循环处理后,输出最新的目标标识符。
如果不是一个列表,使用 else 指令,后面,紧跟冒号”:”。
注意:有多少个 if,对应要输出多少个 else,并且 if 与 else 前后缩进的位置是一样的。
最后,紧接着,依次输出与 if 对应的目标标识符。
例如:《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
复制代码
第二种方法:使用函数处理。具体步骤:
定义一个函数。使用 def 函数名(参数):的标准格式进行定义,用一个 for 循环处理列表,使用一个 if 检查当前的列表项是不是一个列表,如果是一个列表,则调用函数,如果不是一个列表,则输出目标标识符。
调用函数。
例如:《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
复制代码
以上,是如何处理列表中嵌套多个列表的方法。看完一个文科生,一个职场女性,一个小白的总结后,你知道该怎么做了吗?
评论