for循环和可迭代对象遍历

for循环通常用于可迭代对象的遍历。for 循环的语法格式如下:

for变量in 可迭代对象 :

循环体语句

[操作]遍历一个元组或列表

for x in (20,30,40):
print(x*3)

可迭代对象

Python包含以下几种可迭代对象:

1.序列。包含:字符串、列表、元组

2.字典

3.迭代器对象( iterator )

4.生成器函数( generator )

5.文件对象

range对象

range对象是一个迭代器对象,用来产生指定范围的数字序列。格式为:

range(start, end [step])

生成的数值序列从start开始到end结束(不包含end )。若没有填写start ,则默认从0开始。step 是可选的步长,默认为1。如下是几种典型示例:

for i in range(10)          产生序列:0123456789

for i in range(3,10)          产生序列:3456789

for i in range(3,10,2) 产生序列:3579

嵌套循环

一个循环体可以嵌入另一个循环体,一般称为嵌套循环,或者多重循环

操作利用嵌套循环打印九九乘法表

for m in range(1,10):
    s = " "
    for n in range(1,m+ 1): 
        s += str.format("{0}*{1}= {2}\t",m,n,m*n)
    print(s)

break语句

break语句可用于while和for循环,用来结束整个循环。当有嵌套循环时, break语句只能跳出最近一层的循环。

continue语句

continue语句用于结束本次循环,继续下一次。多个循环嵌套时, continue也是应用于最近的一层循环。

else语句

while. for 循环可以附带一个 else语句(可选)。如果for. while 语句没有被break语句结束,则会执行else子句,否则不执行。语法格式如下:

while条件表达式 :                           for变量in 可迭代对象 :

        循环体                                             循环体

else:                                               else:

        语句块                                             语句块

循环代码优化

虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上“斤斤计较”。编写循环时,遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算:

1.尽量减少循环内部不必要的计算

2.嵌套循环中,尽量减少内层循环的计算,尽可能向外提。

3.局部变量查询较快,尽量使用局部变量

使用zip()并行迭代

我们可以通过zip0函数对多个序列进行并行迭代, zip0函数在最短序列"用完”时就会停止

[操作]测试zip0并行迭代

names = ("老大",' 老二","老三","老四")
ages = (18,16,20,25)
jobs = ("老师","程序员","公务员")

for name,age.job in zip(names,ages,jobs):
    print("{0}-{1}-{2}".format(name,age,job))

推导式创建序列

推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的Python风格。

列表推导式

列表推导式生成列表对象,语法如下:

                                [表达式      for item in 可迭代对象]

        或者: {表达式      for  item  in  可迭代对象   if   条件判断}

>>> [x for x in range(1,5)]

[1, 2,3, 4]

字典推导式

字典的推导式生成字典对象,格式如下:

{key_ expression : value_ expression        for表达式in 可迭代对象}

类似于列表推导式,字典推导也可以增加if条件判断、多个for循环。

集合推导式

集合推导式生成集合,和列表推导式的语法格式类似:

                                {表达式        for item in 可迭代对象}

                      或者: {表达式        for item in 可迭代对象if 条件判断}

生成器推导式(生成元组)

提示是一个生成器对象,显然元组是没有推导式的

>>> (x forx in range(1,100) if x%9==0)
< generator object < genexpr> at 0x0000000002BD3048>

一个生成器只能运行一次。 第一次迭代可以得到数据,第二次迭代发现数据已经没有了.

>>> gnt = (x for x in range(1,100) if x%9==0)
>>> for X in gnt:
    print(x,end='')
9 18 27 36 45 54 63 72 81 90 99
>>> for X in gnt:
    print(x,end=' ')
>>>

函数

函数基本概念

1.一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。

2.函数是代码复用的通用机制。

python函数分类

1.内置函数

        我们前面使用的str(). list()、 len(等这些都是内置函数,我们可以拿来直接使用。

2.标准库函数

        我们可以通过import语句导入军,然后使用其中定义的函数

3.第三方库函数

        Python社区也提供了很多高质量的库。下载安装这些库后,也是通过import语句导入,然后可以使用这些第三方库的函数

4.用户自定义函数

用户自己定义的函数,显然也是开发中适应用户自身需求定义的函数。

函数定义和调用

核心要点

Python中,定义函数的语法如下:

        def函数名([参 数列表]) :

        "文档字符串"

        函数体/若干语句

要点:

1.我们使用def来定义函数,然后就是一个空格和函数名称:

        (1) Python 执行def时,会创建一个函数对象 ,并绑定到函数名变量上。

2.参数列表

        (1)圆括号内是形式参数列表,有多个参数则使用逗号隔开

        (2)形式参数不需要声明类型,也不需要指定函数返回值类型

        (3)无参数,也必须保留空的圆括号

        (4)实参列表必须与形参列表一对应

3. return 返回值

4.调用函数之前,必须要先定义函数,即先调用def创建函数对象

        (1)内置函数对象会自动创建

        (2)标准库和第三方库函数,通过import导入模块时,会执行模块中的def语句

形参和实参

[操作]定义一个函数.实现两个数的比较,并返回较大的值。

def printMax(a,b):
   '''实现两个数的比较,并返回较大的值'''
    if a>b:
        print(a,"较大值")
    else:
        print(b,"较大值")


printMax(10,20)
printMax(30,5)

        上面的printMax函数中,在定义时写的printMax(a,b)。a和b称为“形式参数”,简称“形参" .也就是说,形式参数是在定义函数时使用的。形式参数的命名只要符合“标识符”命名规则即可。

        在调用函数时,传递的参数称为“实际参数”,简称“实参”。上面代码中 .printMax(10,20) , 10和20就是实际参数。

返回值

return返回值要点:

        1.如果函数体中包含return语句,则结束函数执行并返回值;

        2.如果函数体中不包含return语句,则返回None值。

        3.要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可。

[操作]定义一个返回两个数平均值的函数

def my_avg(a,b):
    return (a+b)/2
    
#如下是函数的调用
c = my_avg(20,30)
print(c)

        

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐