二.自定义函数(一)

1.用循环处理一个嵌套列表

def print_lol(the_list):

  for each_item in the_list:

    if isinstance(each_item,list):

      print_lol(each_item)

    else:

      print(each_item)

注:1).这个函数定义时参数没有声明类型,这一点知乎上有人回答:https://www.zhihu.com/question/34843836

2).关于python内建函数instance()的用法:http://www.cnblogs.com/sweet521/p/3976634.html

2.改进:发现一个嵌套列表就缩进

说明:添加第二个参数level控制缩进,如果level为正值n,则屏幕上显示一行数据时需要加n个制表符(tab),如果level为0,则不使用缩进。

def print_lol(the_list,level):

  """这个函数有一个位置参数,名为“the_list",这可以是任何python列表(包含或不包含嵌套列表),所提供列表中的各个数据项会递归的打印到屏幕上且各占一行

    第二个参数(名为“level”)用来在遇到嵌套列表时插入一个制表符“”“

  for each_item in the_list:

    if isinstance(each_item,list):

      print_lol(each_item,level+1)

    else:

      for tab_stop in range(level):

        print(" ",end="")

      print(each_item)

注:1)使用range()来控制迭代使用的次数,rang()函数的使用方法:http://www.iplaypy.com/jinjie/range.html

2)end=''的作用:为end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串。这个只有3版本有用。2.*版本不支持。

3)range()在不同版本之间的使用的区别:python2.x 中,range返回的是一个列表
python3.x中,range返回的是一个迭代值
类似for n in range(1,10):之类的可以照常使用
如果要在3.x中产生1-10的列表,可以list(range(1,10))~

3.改进:使用可选参数,兼容旧版函数

说明:为函数提供一个缺省值

def print_lol(the_list,level=0):

print_lol(movies,0)--调用函数,并提供两个参数

print_lol(movies)--调用函数,提供一个参数,第二个参数则使用缺省值

print_lol(movies,2)--调用函数,并停工两个参数,不过为第二个参数提供另一个起始值

print_lol(movies,-1)--如果使用一个负值,实际上这会关闭缩进

4.改进:希望新增的参数不是默认的,而是可选的

说明:增加第三个参数,需要缩进时就设置为True,不需要缩进时就设置为False

"""为函数添加第三个参数,参数名为indent,开始时参数值设置为False,默认不缩进"""

def print_lol(the_list,indent=False,level=0):

  for each_item in the_list:

    if isinstance(each_item,list):

      print_lol(each_item,indent,level+1)

    else:

      if indent:

        for tab_stop in range(level):
          print(" ",end='')

      print(each_item)

原文地址:https://www.cnblogs.com/chenshaoping/p/7151513.html