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期 ...
随机推荐
- SciSharpCube:容器中的SciSharp,.NET机器学习开箱即用
SciSharp Cube 在Docker容器中快速体验SciSharp机器学习工具的最新功能. 项目地址:https://github.com/SciSharp/SciSharpCube 从Dock ...
- Ubuntu Server 与 Ubuntu Desktop区别
今天有位朋友问我,Ubuntu Server 与 Ubuntu Desktop的区别在哪里!区别如下: SERVER没有GUI SERVER没有一堆的桌面软件 SERVER在编译时使用的参数不一样,会 ...
- 小学生都能学会的python(一)2018.9.3
一,小学生第一天 1,认识和了解python python的创始⼈为吉多·范罗苏姆(Guido van Rossum). python是一门解释性语言 弱类型语言 优点:(1).Python的定位是 ...
- TP框架 mysql子查询
一些比较复杂的业务关系,用子查询解决. 比循环便利要好的多哈. 比如下面这句 select 和where in 语句都用了子查询. 因为父查询在select里,所以用了select的字段当子查询的条件 ...
- 计算机网络系统--Microsoft Lync 与 腾讯通RTX 对比(转载)
原文网址: http://it.vsharing.com/226.html ------------------------------- 上海大学统一通信平台现在尚未实施,一直在测试微软的Lync. ...
- @responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object
@responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object 2.也可以再方法上添加@ResponseBody注解, 用于这个类里 ...
- rails create方法ActiveModel::ForbiddenAttribute的问题
rails create方法ActiveModel::ForbiddenAttribute的问题 def create @ad = Ad.new(ad_params) @ad.save end pri ...
- gitlab一键安装 笔记
0 简单介绍bitnami和gitlab bitnami BitNami是一个开源项目,该项目产生的开源软件包安装 Web应用程序和解决方式堆栈.以及虚拟设备. bitnami主办Bitrock公司成 ...
- IOS开发教程--怎样使用点9图片
事先准备一张图片: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA== ...
- Linux3.5内核以后的路由下一跳缓存
在Linux3.5版本号(包括)之前.存在一个路由cache.这个路由cache的初衷是美好的,可是现实往往是令人遗憾的.下面是陈列得出的两个问题:1.面临针对hash算法的ddos问题(描写叙述该问 ...