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期 ...
随机推荐
- with as递归调用
一.递归调用--在代码中偶尔看到以记之,便于下次学习 https://blog.csdn.net/johnf_nash/article/details/78681060 --查询节点及其下所有子节点 ...
- GDI 直线和折线(6)
设置开始点 MoveToEx 函数用于移动画笔到指定的位置: BOOL MoveToEx( HDC hdc, // 设备环境句柄 int X, // 要移动到的 x 坐标 int Y, // 要移动到 ...
- [总结-动态规划]经典DP状态设定和转移方程
马上区域赛,发现DP太弱,赶紧复习补上. #普通DP CodeForces-546D Soldier and Number Game 筛法+动态规划 待补 UVALive-8078 Bracket S ...
- 洛谷P1046 陶陶摘苹果
题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 101010 个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个 303030 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳 ...
- Linux 字符设备驱动简单总结(转)
http://my.oschina.net/u/1169027/blog/191538
- 【AIM Tech Round 5 (rated, Div. 1 + Div. 2) B】Unnatural Conditions
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让a+b的和为100000000...0这样的形式就好了 这样s(a+b)=1<=m就肯定成立了(m>=1) 然后至于s ...
- J - Borg Maze
J - Borg Maze 思路:bfs+最小生成树. #include<queue> #include<cstdio> #include<cstring> #in ...
- 看云-git类的书籍写作
看云-git类的书籍写作 https://www.kancloud.cn/explore 测试一本:https://www.kancloud.cn/stono/b001/501901
- rails 修改数据库之后注意修改controller
rails 修改数据库之后注意修改controller 在view中进行修改之后,注意修改controller中的内容: 这样才可以进行参数的传递:
- Advanced Fruits HDU杭电1503【LCS的保存】
Problem Description The company "21st Century Fruits" has specialized in creating new sort ...