新农村建设投诉在哪个网站,网站制定,百度为什么不收录网站的某个版块,黑马程序员培训学校Python3 迭代器与生成器
迭代器
迭代是 Python 最强大的功能之一#xff0c;是访问集合元素的一种方式。。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问#xff0c;直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两…Python3 迭代器与生成器
迭代器
迭代是 Python 最强大的功能之一是访问集合元素的一种方式。。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法iter() 和 next()。
字符串列表或元组对象都可用于创建迭代器 list[1,2,3,4]it iter(list) # 创建迭代器对象print (next(it)) # 输出迭代器的下一个元素
1print (next(it))
2迭代器对象可以使用常规 for 语句进行遍历
#!/usr/bin/python3list[1,2,3,4]
it iter(list) # 创建迭代器对象
for x in it:print (x, end )尝试一下
执行以上程序输出结果如下
1 2 3 4也可以使用 next() 函数
#!/usr/bin/python3import sys # 引入 sys 模块list[1,2,3,4]
it iter(list) # 创建迭代器对象while True:try:print (next(it))except StopIteration:sys.exit()尝试一下
执行以上程序输出结果如下
1
2
3
4生成器 在 Python 中使用了 yield 的函数被称为生成器generator。
跟普通函数不同的是生成器是一个返回迭代器的函数只能用于迭代操作更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中每次遇到 yield 时函数会暂停并保存当前所有的运行信息返回 yield 的值。并在下一次执行 next() 方法时从当前位置继续运行。
以下实例使用 yield 实现斐波那契数列
#!/usr/bin/python3import sysdef fibonacci(n): # 生成器函数 - 斐波那契a, b, counter 0, 1, 0while True:if (counter n): returnyield aa, b b, a bcounter 1
f fibonacci(10) # f 是一个迭代器由生成器返回生成while True:try:print (next(f), end )except StopIteration:sys.exit()尝试一下
执行以上程序输出结果如下
0 1 1 2 3 5 8 13 21 34 55 Python sys 模块介绍 在 Python 的 sys 模块提供访问解释器使用或维护的变量和与解释器进行交互的函数。
通俗来讲sys 模块负责程序与 Python 解释器的交互提供了一系列的函数和变量用于操控 Python 运行时的环境。
Python3 函数
Python 定义函数使用 def 关键字一般格式如下
def 函数名参数列表函数体让我们使用函数来输出Hello World def hello() :print(Hello World!) hello()
Hello World!更复杂点的应用函数中带上参数变量:
def area(width, height):return width * heightdef print_welcome(name):print(Welcome, name)print_welcome(Fred)
w 4
h 5
print(width , w, height , h, area , area(w, h))尝试一下
以上实例输出结果
Welcome Fred
width 4 height 5 area 20函数变量作用域
定义在函数内部的变量拥有一个局部作用域定义在函数外的拥有全局作用域。
通过以下实例你可以清楚了解 Python 函数变量的作用域
#!/usr/bin/env python3
a 4 # 全局变量def print_func1():a 17 # 局部变量print(in print_func a , a)def print_func2(): print(in print_func a , a)print_func1()
print_func2()
print(a , a) 尝试一下
以上实例运行结果如下
in print_func a 17
in print_func a 4
a 4关键字参数
函数也可以使用 kwarg value 的关键字参数形式被调用。例如以下函数:
def parrot(voltage, statea stiff, actionvoom, typeNorwegian Blue):print(-- This parrot wouldnt, action, end )print(if you put, voltage, volts through it.)print(-- Lovely plumage, the, type)print(-- Its, state, !)可以以下几种方式被调用:
parrot(1000) # 1 positional argument
parrot(voltage1000) # 1 keyword argument
parrot(voltage1000000, actionVOOOOOM) # 2 keyword arguments
parrot(actionVOOOOOM, voltage1000000) # 2 keyword arguments
parrot(a million, bereft of life, jump) # 3 positional arguments
parrot(a thousand, statepushing up the daisies) # 1 positional, 1 keyword以下为错误调用方法
parrot() # required argument missing
parrot(voltage5.0, dead) # non-keyword argument after a keyword argument
parrot(110, voltage220) # duplicate value for the same argument
parrot(actorJohn Cleese) # unknown keyword argument返回值
Python 函数使用 return 语句返回函数值可以将函数作为一个值赋值给指定变量
def return_sum(x,y):c x yreturn cres return_sum(4,5)
print(res)尝试一下
你也可以让函数返回空值
def empty_return(x,y):c x yreturnres empty_return(4,5)
print(res)尝试一下 可变参数列表
最后一个较不常用的功能是可以让函数调用可变个数的参数。
这些参数被包装进一个元组(查看元组和序列)。
在这些可变个数的参数之前可以有零到多个普通的参数:
def arithmetic_mean(*args):if len(args) 0:return 0else:sum 0for x in args:sum xreturn sum/len(args)print(arithmetic_mean(45,32,89,78))
print(arithmetic_mean(8989.8,78787.78,3453,78778.73))
print(arithmetic_mean(45,32))
print(arithmetic_mean(45))
print(arithmetic_mean())
尝试一下
以上实例输出结果为
61.0
42502.3275
38.5
45.0
0