python第一站-列表,循环,函数,递归

        今天看Head First Python,虽然已经不是Python初学者的我对这本书尤为衷心,不仅仅是在论坛上很多人的推荐,而是它循序渐进的思路是和实际程序是相吻合的。

       下面慢慢走进今天列表的主题:

 

  1. 列表的创建:movies = ["one","two","three"......]

  2. 列表的迭代

    方法一简洁而不失风度,方式二比较繁杂,一般在实际项目中用到for循环的要一些,除非一开始指定循环的开始值。

""" 方法一"""
for each in all :
print(each)
"""方法二"""
count = 0
while count < len(movies):
print (movies[count])
count=count+1

iii.列表的列表(列表的嵌套)

    movies = ["one","two","three",["The holy","name",[123,"123@","err"]]]

  

print(movies[3][1][1])
"""试着判断结果"""
for each in movies:
print(each)
"""试着判断结果"""
"""结果为:one  two three ["the holy","name",[123,"123@",en]]"""

      这是因为for循环只能打印外列表的各个数据项。

iv.    那么现在的问题就来了,如何能够把内层的列表的值也输出来呢?

       这里我们涉及到了 if-else机制(处理列表一项的时候查看这一项本身是不是另外一个的列表),特别重要的用到了isinstance()BIIF内置函数,该内置函数用来检查特定标识符是否包含某一个特定类型的数据。得到下列代码的改进:

for each in ndd:
if isinstance(each,list):
for nested in each:
print(nested)
else:
print(each)

vi.处理多层循环列表:

#!/usr/bin/env python
# encoding: utf-8
"""
处理多层嵌套循环
"""
ndd = ["what","why","chen",
[1222,"jie","vi",
["chenjie","jingjing",
[2012,"chenjieaijingjing"]]]]
print(ndd[3][3][2][1])
for each in ndd:
if isinstance(each,list):
for nested in each:
if isinstance(nested,list):
for what in nested:
if isinstance(what,list):
for why in what:
if isinstance(why,list):
print(why)
else:
print(what)
else:
print(nested)
else:
print(each)

vii:    重复而繁杂的for循环使你一看就觉得烦恼,也使得我们的程序可读性大大降低,我们在实际开发中肯定不能用这样的代码,其复杂度太大了上面的代码复杂度能达到n的三次方,所以我们急需一种机制能够使我们的代码简洁又能完成我们的任务。

       于是,函数并应运而生,我们可以把循环写在函数里面,需要用到处理列表的时候就调用函数,从而得到下列程序代码:

#!/usr/bin/env python
# encoding: utf-8
ndd = ["what","why","chen",
[1222,"jie","vi",
["chenjie","jingjing",
[2012,"chenjieaijingjing"]]]]
"""
处理多层嵌套循环
通过函数方式压缩代码
"""
def print_lol(the_list):
for the_list_fun in the_list:
if isinstance(the_list_fun,list):
print_lol(the_list_fun)
else:
print(the_list_fun)
print_lol(ndd)

以上就是递归加函数来处理多层循环列表的代码,我们可以把上面这个程序作为一个可重用代码块,可以在程序的其他地方应用。

本文出自 “ChenSvior-Knowledge” 博客,请务必保留此出处http://jackchenvior.blog.51cto.com/2200715/1361343

python第一站-列表,循环,函数,递归

上一篇:JS调用ATL COM中的C++接口的做法


下一篇:C++ UAC 提权 一个管理员身份运行程序