python 10 迭代器和三元运算符

  • 一.迭代器

1.迭代器协议:对象必须提供一种next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,终止迭代

2.可迭代对象:实现了迭代器协议的对象

3.python 的内部工具(for,sum,min,max函数),使用迭代器协议访问对象

  • 二 for循环机制

for循环本质:循环所有对象,全部使用迭代器协议

注意1:字典,字符串,列表,元组,集合,文件对象,都不是可迭代对象,for循环时,调用了他们的_iter_方法,将他们转换为可迭代对象

for循环工作:1,调用_iter_方法    2,调用_next_方法    3.捕捉异常

为什么要有for循环:

序列类型 字符串,列表,元组可以使用index访问,但是字典集合,文件对象,不行,for循环一视同仁   ,都是使用迭代器协议

注意2:next()方法,就是在调用迭代器本身的iter_._next_()方法

  • 三 三元运算,列表解析,生成器表达式

1.生成器:一种数据类型,自动实现了迭代器协议,不是字典,字符串,列表,元组,集合,文件对象之类的,不需要调用_iter_方法

两种表现形式:①常规函数定义,使用yield语句而不是return语句返回结果. yield语句一次返回一个结果,在每个结果中间,挂起函数状态,下次从它离开的地方继续.

②生成器表达式:

三元表达式,条件成立返回前面,否则返回后面

列表解析

缺点:当数据过大的时候,所占内存过过大

生成器:这就是生成器表达式,

比列表解析节省内存.原因:基于迭代器协议,一个个生成对象,

只要使用迭代器协议的函数,就可以使用生成器表达式

  • 四 生成器函数好处

1.得到一个值,可以立马进行返回,不用等所有的值都得到

2.节约内存(不用一个容器装起来)

不使用生成器函数的坏处

1.占空间大

2.效率低(函数执行完了,所有的返回值都准备好了才能返回)

原文地址:https://www.cnblogs.com/MrYangjlPython/p/10080634.html

时间: 2024-08-03 00:39:01

python 10 迭代器和三元运算符的相关文章

Python学习杂记_10_三元运算符

常用三元运算符来简化分支和循环的代码: 分支简化: a = 1b = 2c = a if a > 1 else bprint(c) # 以上几行等同于 a = 1b = 2if a >1: c = aelse: c = bprint(c) 循环简化: nums = list(range(1,11))s = [i for i in nums if i % 2 == 0]print(s) # 以上代码等同于 s = []nums = list(range(1,11))for i in nums:

js三元运算符与循环

 三元运算符 语法: 条件?成立做的事情:不成立做的事情:<=>相当于简单的if/else判断(简化写法) var num = 12; if(num>10){ num ++; }else { num--; } => 相当于三元运算符: num > 10? num++ : num--; 特殊情况: //=>如果三元运算符中某一部分成立不需要任何的处理我们用null/underfined/void 0...占位即可 var num=12; num>10?num++ :

Python:集合、函数、三元运算符

集合: #一种数据类型,有去重的功能,无序的(不能根据下标取值) 两种定义集合方法: 1:先定义一个列表,然后通过强制类型转换成集合 a=[1,2,3,4,4,5]  #set(a) 强制类型把列表a转换为集合,会把重复的值4去重 2:S={1,2,3,4}  #与字典要区别开 集合的操作: list1 = {1, 2, 3, 4, 5, 6, 9} list2 = {2, 3, 4, 6, 1} list3 = {1, 2, 3} print(list1.intersection(list2)

python学习第十九天三元运算符与php语言区别

三元运算符是条件语句的简写,常见的条件语句写三行,三元运算符只需要写一行,python三元运算符是怎么写的呢 1,常见条件判断 if a<b: print(a) else: print(b) 2,三元运算符 val=a if a<b else b 如果a小于b 就等于a 否则 等于b 3,php语言的三元运算 $id = isset($_GET['id']) ? $_GET['id'] : false; 接收的id存在 取值 $id= $_GET['id']  否则 false 文章来自 (玖

python 的三元运算符

一.三元运算符 三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值 格式:[on_true] if [expression] else [on_false] res = 值1 if 条件 else 值2 1.举例说明: a =1 b = 2 c= a if a>1 else b #如果a大于1的话,c=a,否则c=b 如果不用三元运算符,就用if-else条件判断,如下: a = 1 b = 2 if a >1: c = a else: c = b 2.三元运算符也可以用在列表和字典中

python 三元运算符、推导式、递归、匿名函数、内置函数

三目运算符 # 三目(元)运算符:就是 if...else...语法糖 # 前提:简化if...else...结构,且两个分支有且只有一条语句 # 注:三元运算符的结果不一定要与条件直接性关系 cmd = input('cmd: ') print('可以转化为数字') if cmd.isdigit() else print('不可以转化为数字') a = 20 b = 30 res = a if a > b else b # 求大值 print(res) res = 'b为小值' if a >

python学习10—迭代器

python学习10—迭代器 1. 迭代器协议 对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个StopIteration异常,以终止迭代(只能往后走不能往前退) 2. 可迭代对象 实现了迭代器协议的对象,对象内部定义一个__iter__()方法 3. for循环实现机制 字符串.列表,元组,字典,集合,文件等都不具有next方法,所以他们都不是可迭代对象(iterable object),但是为什么for循环可以进行呢? 原因:for循环首先调用了他们的内置方法__

Python算术运算符、赋值运算符、关系运算符、逻辑运算符、条件运算符(三元运算符)

# 算术运算符 # + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作) # - 减法运算符 # * 乘法运算符(如果将字符串和数字相乘,则会对字符串进行复制操作,将字符串重复指定次数) # / 除法运算符,运算时结果总会返回一个浮点类型 # // 整除,只会保留计算后的整数位,总会返回一个整型 # ** 幂运算,求一个值的几次幂 # % 取模,求两个数相除的余数 # 赋值运算符 # = 可以将等号右侧的值赋值给等号左侧的变量 # += a += 5 相当于 a = a + 5

python三元运算符—报错“SyntaxError: can&#39;t assign to conditional expression”

运行代码: a=1 b=1 x=1 if a==b else x=0 print(x) 提示错误: File "test.py", line 3 x=a if a==b else x=0 ^ SyntaxError: can't assign to conditional expression expression是表达式,就是加减乘除等各种运算符号连接起来的式子(statement是语句,如if语句,while,复制语句等): 三目运算中表达式只能作为左值 修改后: a=1 b=1