Bootstrap

如何从零开始学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

以上,是如何处理列表中嵌套多个列表的方法。看完一个文科生,一个职场女性,一个小白的总结后,你知道该怎么做了吗?