day19-1 迭代器,三元表达式,列表推导式,字典生成式,
迭代器
可迭代对象
- 拥有iter方法的对象就是可迭代对象
# 以下都是可迭代的对象
st = '123'.__iter__()
lis = [1, 2, 3].__iter__()
tup = (1, 2, 3).__iter__()
dic = {1: 'one', 2: 'two', 3: 'three'}.__iter__()
se = {1, 2, 3}.__iter__()
with open (r'123.txt', 'w', encoding='utf-8') as fw:
fw.__iter__()
迭代器对象
- 拥有next方法的可迭代对象就是迭代器对象
# 依赖索引的数据类型迭代取值
lis = [1, 2, 3]
iter_lis = lis.__iter__() # 把可迭代对象变成迭代器对象
print(iter_lis.__next__())
print(iter_lis.__next__())
print(iter_lis.__next__())
1
2
3
# 不依赖索引的数据类型迭代取值
dic = {1: 'one', 2: 'two', 3: 'three'}
iter_dic = dic.__iter__()
print(iter_dic.__next__())
print(iter_dic.__next__())
print(iter_dic.__next__())
1
2
3
__next__其实是在遍历可迭代对象的元素,一旦遍历完报错
hobby_list2 = ['run','read']
count = 0
while True:
print(hobby_list2[count])
count += 1
if count == len(hobby_list2):
break
run
read
- for循环不依赖索引取值
- 这一段代码如果用c写,就是for循环的原理
hobby_list = ['run', 'read']
hobby_list_iter = hobby_list.__iter__()
while True:
try:
print(hobby_list_iter.__next__())
except:
break
run
read
for i in hobby_list: # for循环自动帮我们把变量变成了可迭代对象
print(i)
run
read
print(hobby_list) # 一筐鸡蛋
print(hobby_list.__iter__()) # 相比较列表,它节省内存空间,老母鸡
总结
- 可迭代对象: 拥有iter方法的对象就是可迭代对象,可迭代对象不一定是迭代器对象,文件就是特例
- 迭代器对象: 拥有next方法的可迭代对象就是迭代器对象.迭代器对象一定是可迭代对象
- 文件既是可迭代对象,又是迭代器对象
三元表达式(三目表达式)
- 只有else没有elif
x = 7
if x == 7:
print(x)
else:
print(x**2)
7
# 不推荐使用,写代码还是尽量整洁易懂
print(x) if x == 7 else print(x**2)
7
列表推导式
lis = []
for i in range(10):
lis.append(i)
print(lis)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 不推荐写
print([i for i in range(10)])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 及其不推荐写,不然会被当成傻逼
print([i*2 if i>5 else i for i in range(10)])
[0, 1, 2, 3, 4, 5, 12, 14, 16, 18]
字典生成式
dic = {i:i*2 for i in range(5)}
print(dic)
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
## 拉链函数
res = zip('abcd', [1,2,3,4])
dic = dict()
for k,v in res:
dic[k] = v
print(dic)
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
print({k:v for k,v in zip('abcd', [1,2,3])})
{'a': 1, 'b': 2, 'c': 3}
day19-1 迭代器,三元表达式,列表推导式,字典生成式,的更多相关文章
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- python 三元表达式 列表推导式,生成器表达式。递归,匿名函数, 内置函数
三元表达式 三元表达式仅应用于: 1.条件成立返回一个值 2.条件不成立返回一个值 res = x if x>y else y print(res) name= input("姓名&g ...
- python基础-三元表达式/列表推导式/生成器表达式
1.三元表达式:如果成立返回if前的内容,如果不成立返回else的内容 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' ...
- Python-02 生成器表达式,列表推导式
列表推导式和生成器表达式 列表推导式,生成器表达式1,列表推导式比较直观,占内存2,生成器表达式不容易看出内容,省内存. [ 变量(加工后的数据) for 变量i in 可迭代的数据类型 ] 列表 ...
- python笔记3 闭包 装饰器 迭代器 生成器 内置函数 初识递归 列表推导式 字典推导式
闭包 1, 闭包是嵌套在函数中的 2, 闭包是内层函数对外层函数的变量(非全局变量)的引用(改变) 3,闭包需要将其作为一个对象返回,而且必须逐层返回,直至最外层函数的返回值 闭包例子: def a1 ...
- day13-迭代器、三元表达式、列表推导式、字典生成式、生成器与递归
目录 迭代器 可迭代对象 迭代器对象 for循环原理 三元表达式(三目表达式) 列表推导式 字典生成式 zip()方法 生成器 生成器表达式 递归 递归的两个阶段 迭代器 迭代器即迭代的工具,迭代是一 ...
- day12函数,三元表达式 ,列表推导式 ,字典推导式,函数对象,名称空间与作用域,函数的嵌套定义
复习 # 字符串的比较 # -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 # 函数的参数 # 1)实参与形参: # -- 形参:在函数定义时()中出现的参数 # -- 实参:在函 ...
- day12(表达式,推导式,名称空间与作用域,函数的嵌套定义)
一,复习 # 字符串的比较 # -- 按照从左往右比较每一个字符,通过字符对应的ascll进行比较 # print('a' > 'A') #True # print('ac' > 'ab' ...
- python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)
一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...
随机推荐
- Oracle下rman备份和还原到数据库任意一个时间点
Rman备份为物理备份,启用rman备份必须开启数据库归档,开启归档后相当于给数据库加了一层双保险.Rman备份主要备份数据库的数据文件,控制文件,归档日志. RMAN 备份 一. 检查数据库是否启用 ...
- VMware ESXi定制版(OEM ISO)资源下载
一.VMware ESXi 5.1.0 update03 链接: https://pan.baidu.com/s/1nvQ4CGD 密码: acc1 1.VMware-ESXi-5.1.0-Updat ...
- 路飞学城Python-Day78
17-静态文件配置1 静态的文件的配置不能直接将CSS.JS文件直接放在templates的文件夹中 要将所有的静态文件放在static的文件夹中,然后配置上静态文件static的路径 要想访问Dja ...
- js进度条插件pace.js
主要用到themes文件夹和pace.js文件
- linux双网卡配置
一.VM虚拟机添加一个网络适配器. 选择自己需要的模式类型 二.启动虚拟机,配置网卡 按原先配置网卡的方式配置完(ip地址及默认网关还有网卡名不能跟原先的一样) 重启所有网卡(service netw ...
- 菜鸟学习ios
object-c中@interface和@property声明变量的区别 Objective-C语言关键词,与@synthesize配对使用.xcode4.5以及以后的版本,@synthesize ...
- python第七周:反射、异常
1.反射: 1.1定义:通过字符串映射或修改程序运行时的状态.属性.方法 1.2有以下四个方法: (1)hasattr(object,str) 判断object对象中是否有对应的方法或属性,返回值:T ...
- 【codeforces 799A】Carrot Cakes
[题目链接]:http://codeforces.com/contest/799/problem/A [题意] 你有一个烤炉; 每t秒能同时烤出k个蛋糕; 你可以在第一个烤炉在烤的时候;同时花费d秒建 ...
- properties 乱码问题
File --> Others Settings --> Default Settings
- Inflation System Properties
https://blogs.oracle.com/buck/inflation-system-properties I wanted to write a quick post about the t ...