一、创建嵌套列表时
各个列表项之间用逗号”,”隔开,每个列表的起始位置,都要用中括号“[”开始,结束时,对应用“]”结束。
例如:《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 Grail1975Terry Jones &Terry Gilliam91Graham ChapmanMichael PalinJohn CleeseTerry GilliamEric IdleTerry Jones
       复制代码
 
以上,是如何处理列表中嵌套多个列表的方法。看完一个文科生,一个职场女性,一个小白的总结后,你知道该怎么做了吗?
评论