zoukankan      html  css  js  c++  java
  • Python学习笔记 第二课 循环

     1 >>> movies=["The Holy Grail", 1975, "The Life of Brian", 1979, "The Meaning of Life", 1983]
     2 >>> for eachMovie in movies:
     3     print(eachMovie)

    按下两个回车后输出结果如下:

    1 The Holy Grail
    2 1975
    3 The Life of Brian
    4 1979
    5 The Meaning of Life
    6 1983

    列表中还可以存储其他列表!

    movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91,
              ["Graham Chapman",
              ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]
           ]
          ]

    这样的嵌套列表用上面的for循环怎么处理呢?

    >>> for each_item in movies:
        print(each_item)
    
        
    The Holy Grail
    1975
    Terry Jones & Terry Gilliam
    91
    ['Graham Chapman', ['Michael Palin', 'John Cleese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]

    哦!没有处理干净......

    再循环!

    >>> 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:
                        if isinstance(deeper_item,list):
                            for deepest_item in deeper_item:
                                print(deepest_item)
                        else:
                            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 函数名(参数):
    
      函数代码组
    1 >>> def print_lol(movies):
    2     for each_item in movies:
    3         if isinstance(each_item,list):
    4             print_lol(each_item)
    5         else:
    6             print(each_item)

    6行代码即可完成上面的晕头转向。

    引用函数:

    >>> print_lol (movies)

    结果如下:

     1 The Holy Grail
     2 1975
     3 Terry Jones & Terry Gilliam
     4 91
     5 Graham Chapman
     6 Michael Palin
     7 John Cleese
     8 Terry Gilliam
     9 Eric Idle
    10 Terry Jones

    我们以后就可以用这个函数来处理各种嵌套列表了。

    定义一个列表:

    >>> hello=["a","b",1,3,["hello",22,33,["ok","h"]],"zhuangshi"]

    调用函数:

    >>> print_lol(hello)

    结果如下:

     1 a
     2 b
     3 1
     4 3
     5 hello
     6 22
     7 33
     8 ok
     9 h
    10 zhuangshi

    再看这个函数:

    1 >>> def print_lol(movies):
    2     for each_item in movies:
    3         if isinstance(each_item,list):
    4             print_lol(each_item)
    5         else:
    6             print(each_item)

    在代码内部引用了自身!——递归!没错是递归。Python3默认递归深度不能超过100,但是这个深度上限可以改。

    --End--

  • 相关阅读:
    Grodno 2015 (Urozero May 2015 Day 5) D Triangles
    Flea Circus(Project Euler 213)
    Prime triplets (Project Euler 196)
    ACM 博弈(难)题练习 (第二弹)
    Crosses Puzzles zoj 4018 (zju校赛)
    Petrozavodsk Summer-2015. Ivan Smirnov Contest 1 B Bloom
    ACM 博弈(难)题练习 (第一弹)
    2017 ACM区域赛(南宁站) 参赛流水账
    2017 CCPC 杭州 流水账
    2017 ACM区域赛(西安) 参赛流水账
  • 原文地址:https://www.cnblogs.com/ibgo/p/3488175.html
Copyright © 2011-2022 走看看