2020-03-17

学习笔记之二十六

集合推导式

#类似于列表推导式,就是表示符号不同,外加多了一个去重功能,因为集合中的元素不能重复存在
list1=[1,2.3,4,5,4,4,5,8,9]
set={i+4 for i in list1 if i>5}
print(set)

字典推导式

dict={‘a’:‘A’,‘b’:‘B’,‘c’:‘C’,‘d’:‘C’}
#dict1={value:key for value in dict.items()} 此句代码错误,因为键值对不能只以一个value去遍历

dict1={value:key for key,value in dict.items()}
print(dict1)

生成器

‘’’
通过列表生成式,我们可创建一个新的列表,但是收到内容限制,
列表的容量是有限的,而且创建一个容量包含100万个元素的列表,其占用的空间是
很大的,若果我么仅需要前边的几个元素,那么后边的元素占用的空间就白白浪费了,
所以列表的元素可以通过某种固定的方法推导出来,我们就可以不用创建完整的列表,而是在需要的过程中不断推导出我们
所需要的元素,从而节省大量的空间,这种方法在Python中称为 生成器-generator

‘’’
#生成器的得到方法有: 通过列表推导式,例如
list1=[x*3 for x in range(10)]
print(list1)

对应的生成器为

g=(x*3 for x in range(10))
#但生成器只是一种方法,调用的时候才会产生具体的值,而且调用一次产生一个值,以此类推

调用生成器的方法有两种 next() next()

print(type(g))

print(g.next())
print(g.next())
print(g.next())
print(g.next())

调用方法二

print(next(g)) #next() 为内置函数 builtin

#两种调用方法的次数可以累加

print(g.next())
print(g.next())
print(g.next())
print(g.next())
print(g.next())
print(g.next()) #调用次数超限时报错 StopIteration

print(g.next())
while True:
try:
e=next(g)
print(e)
except:
print(‘调用次数超限了!’)
break

生成器之 方法三

send:向每次调用中传递值,但是第一次必须send(none)
def gen():
i=0
while i<5:
temp=yield i # 其作用是return i 和暂停
print(‘temp’,temp)
i+=1
return “没有更多元素了!”
#注;第一次调用(send(none))时接收yield 1,即返回i=0,没有传送值(因为none),第二次调用时(send(‘哈哈’)),
从暂停yield处开始运行,首先将哈哈传递给temp,因为此时的temp再运行下一句1+=1,至返回i=1时返回值i=1及暂停,
此时的temp=‘哈哈’,但不胡返回出去(因为此时已经暂停了),第三次调用时才返回第二次传送的值‘哈哈’

生成器之函数:

利用函数做一个生成器,利用关键字yield (返回一个值和暂停的功能)

def func():
i=1
while True:
i+=1
print(i)
上述执行之电脑卡死,无线循环

def func():
i=1
while True:
i+=1
yield i
#print(i) 这一句不需要

g=func() #这时还没调用,只是表明这是生成器函数

#调用
print(next(g))
print(next(g))
print(next(g))

利用生成器写 ## 斐波那契 数列:

def fib(length):
a,b=0,1 #同时赋值简化
n=0
while True:
# print(b) 下一句中有返回作用,这句输出语句就不需要
yield b
a,b=b,a+b
n+=1
return ‘没有更多元素了!’

g=fib(9)

print(next(g))
print(next(g))
print(next(g))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值