python从入门到秃头_python入门到秃顶(11):迭代器、生成器模块及包

python入门到秃顶(11):迭代器、生成器模块及包

2020-07-12 11:21

阅读数 14

<>一,推导式

<>1,推到表达式(python特有)

# 创建一个1到10列表 list_a = [for i in range(1, 11)] print(list_a)

​ 1到10的列表

list_a = [i for i in range(1,11)] # 会自动创建一个1到10的列表 print(list_a) # for

循环下面的代码块移到for的前面,并且这个推导式会把i的每一次值保留

​ 1到10,偶数的列表

# 创建一个列表,让这个列表里面的元素是1到10的偶数 list_a = [i for i in range(1, 11) if i % 2 == 0]

print(list_a) # 有if判断,判断句写在for循环后面,i会根据i的真假保留值

​ 1到10,基数变字符串,偶数扩大10倍的列表

list_a = [i*10 if i % 2 == 0 else str(i) for i in range(1, 11)] print(list_a)

# if条件判断里面有else的话,写成三目运算放在for循环前面

​ 列表推导式,主要完成不那么复杂的功能,推导式的代码必须写成一行!!!

<>2,字典推导式

# 创建一个字典,以键值对的形式存在 dict_a = {i: j for i, j in [('a', 1), ('b', 2), ('c', 3)]}

print(dict_a) # 会把列表里面的元组的值分别赋值给i,j并生成一个字典

<>二,迭代器

*

实现一个迭代器之前必须有一个可迭代对象

*

什么对象是可迭代对象:如果一个对象实现了__iter__这个魔法方法

<>1,创建一个列表迭代器

​ 迭代器:实现了__iter__和__next__方法的对象

a = [1, 2, 3, 4, 5] # 创建一个可迭代对象 b = iter(a) # 把a通过iter这个函数转换成迭代器,赋值给b print(b)

# 列表迭代对象

""" 迭代器本身需要支持这两种方法才叫迭代器: 1,iterator.__iter__() 2,iterator.__next__() 生成迭代器的函数:

1,iterator = iter(a) 2,iterator = a.__iter__() 在迭代器里面取值: 1,next(iterator)

2,iterator.__next__() 注意,如果迭代器取值完之后,会返回StopIteration错误 """

​ 可迭代对象和迭代器的区别:

​ 1,可迭代对象里面取出元素,不是真正意义上的取出来,还是存在的

​ 2,迭代器里面取元素就是直接把他取出来,取走了就没了

<>三,生成器

* 用列表推导式生成的是列表,用元组推导式生成的是生成器

* 生成器属于迭代器,它实现了__iter__和__next__这两个魔法方法

<>1,创建一个生成器

a = (i for i in range(1, 11)) print(a) at

0x0000023A61639620> # 用元组推导式实现了一个生成器对象

<>2,实现了yield关键字的生成器函数

def func(num): a = 0 while a

这个函数使用了yield关键字,这是一个生成器函数,返回的对象是生成器对象 """ 1,返回这个函数对象 yield一个对象: 2,暂停这个函数

3,等待下次next重新激活函数 """

<>四,模块

* 什么是模块? .py的文件

<>1,在一个文件里面使用同一个目录里另外一个文件的功能!

​ 只导入一个工具箱里面的一个工具,三种导入方式:

​ 1,from 工具箱 import 工具1,工具2,工具3

​ 2, from 工具箱 import * 导入所有工具

​ 3,import pandas as pd 给模块取别名

<>2,如果一个模块的函数名字太长,取别名

​ import pandas as pd

​ from 模块 import 这个模块的名字真长真恶心心啊 as func

<>3,如果两个文件不在同一个目录下

imoprt sys print(sys.path) # sys.path 打印出python的模块所在地 sys.path.append(r

'D:/python/PycharmCode/test/test') # 例子 #只要导入模块所在的目录就可以了,不用精确到文件

​ python在导入一个文件的时候回去sys.path里面去找,找到导入,找不到报错

<>4,导入模块时模块有红线

<>五,包和包管理

<>1,包的概念

​ 1.1,把很多模块放到一个文件夹里面,就可以形成一个包

​ 1.2,当一个文件夹里面有个__Iinit__.py的文件,文件夹名就是包名

​ 1.3,在pycharm里创建一个包

<>2,包管理

​ 当很多模块放在文件夹中时,为了方便应用包中的模块,引入了包管理

<>3,导入包里面的模块

<>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值