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

本文介绍了Python中的数据结构操作,包括列表、字典推导式及生成器的使用方法。同时,还详细讲解了如何管理和使用Python模块及包,帮助读者更好地组织代码。
一,推导式

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)
<list_iterator object at 0x0000022BA5DCB080> # 列表迭代对象

在这里插入图片描述

"""
	迭代器本身需要支持这两种方法才叫迭代器:
		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)
<generator object <genexpr> at 0x0000023A61639620> 
# 用元组推导式实现了一个生成器对象
2,实现了yield关键字的生成器函数
def func(num):
	a = 0
	while a<num :
		yield a			
		a += 1
# 这个函数使用了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、付费专栏及课程。

余额充值