推广 热搜: 可以  搜索引擎  page  企业  百度  个数  使用  选择  音视频  父亲 

Day 12 生成器,推导式,内置函数一

   日期:2025-01-01     移动:http://ww.kub2b.com/mobile/quote/11628.html

迭代器:python中内置的一种节省的工具
生成器的本质就是一个迭代器
迭代器和生成器区别:一个是python自带的,一个是自己写的

写一个生成器:
def func():
print(123)
return '你好'
func()

将return编程yield就是一个生成器
def func():
if 2:
yield '你好'
if 1:
yield '我好'
if 3:
yield '大家好'
g = func()#产生一个生成器
print(g.next())
print(g.next())
print(g.next())

for i in g:
print(i)

def foo():
for i in range(10):
pass
yield i
count = 1
while True:
yield count
count += 1
g = foo()

for i in g:
print(i)

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

send()自己了解

坑--会产生新的生成器
print(foo().next())
print(foo().next())
解决
g = foo()
print(next(g))
python2 中没有__next__

g.iter()
g.next()

在函数中将return改写乘yield就是生成器
yield和return 也是返回
yeild会记录执行位置
return可以写多个,但是只执行一次
一个__next__对应一个yield
生成器可以使用for循环获取值
yield from -- 将可迭代对象元素逐个返回
send() 了解
在函数的内部,yield 能将for循环和while循环临时停止

生成器应用场景:
def func():
lst = []
for i in range(100):
lst.append(i)
return lst
print(func())

def func():
for i in range(100):
yield i
g = func()
for i in range(2):
print(next(g))

def func():
lst = ['牛羊配','老奶奶花生米','卫龙','虾扯蛋','米老头','老干妈']
for i in lst:
yield i
g = func()
print(next(g))

def func():
lst = ['牛羊配','老奶奶花生米','卫龙','虾扯蛋','米老头','老干妈']
yield from lst
g = func()

for i in g:
print(i)

推导式
lst = []
for i in range(20):
lst.append(i)
print(i)

list推导式
print([i for i in range(20)])

循环推导式
[变量 for i in range(20) ]

筛选模式
lst = []
for i in range(20):
if i % 2 == 0:
lst.append(i)
print(lst)

print([i for i in range(20) if i % 2 == 0])
[变量(加工后的变量) for循环 加工方式]

print([i for i in range(50) if i % 2 == 1])
print([i for i in range(1,50,2)])j

生成器表达式
循环模式
g = (i for i in range(20))
print(next(g))
print(next(g))
print(next(g))

筛选模式
g = (i for i in range(50) if i % 2 == 1)
for i in g:
print(i)

字典推导式(了解)
print({i:i+1 for i in range(20)})
print({i:i+1 for i in range(20) if i % 2 == 1})

集合推导式
print({i for i in range(20) if i % 2 == 1})

list
[变量(加工后的变量) for循环]
[变量(加工后的变量) for循环 加工条件]

生成器表达式
(变量(加工后的变量) for循环)
(变量(加工后的变量) for循环 加工条件)

字典推导式:

集合推导式:

内置函数模块一(不常用)
s = """
for i in range(10)
print(i)
"""
print(exec(s))

s1 = """
for i in range(10)
print(123)
func()
"""
print(exal(s))
print(exec(s1))

print(hash('12')) 哈希

print(help(list)) 帮助查看:打印源码

def func():
pass
print(callable()) 判断是否可调用,返回的是bool

print(float(2)) #浮点数

print(complex(56)) #复数

print(bin())十进制转二进制

print(oct(15)) #二进制转八进制
print(hex(15)) #二进制转十六进制

print(divmod(5,2)) 取商取余

print(round(5.3234,2)) 四舍五入---默认整数,可指定小数位数

print(pow(2,3)) 幂函数
print(pow(2,3,4))

s= 'alex'
print(bytes(s.encode(s)))

print(ord('你')) # 当前编码 只能一个字一个字找.AECII
print(chr(20320)) 通过码位找字

s ='C: '
print(repr(s)) 是什么就打什么

print('C: 你好')

lst = [1,2,3,4,5,0]
print(all(lst)) 判断元素是否都为真 相似and
print(any(lst)) 判断元素中是否有真 相似or

name = 1
def func():
print(123)
print(globals()) #查看全局空间的变量
print(locals()) #查看当前空间的变量

今日总结
1.生成器
定义一个生成器
基于函数
函数题中存在yield就是一个生成器
函数名()就是产生一个生成器
生成器的本质就是一个迭代器
生成器和迭代器的区别:
迭代器是python自带的
生成器是程序员写的
生成器:
节省空间---惰性机制
不能逆行
一次性
一个next对应一个yield
yield能够进行返回内容,还能返回多个参数
yield能够零食停止循环
yield能够记录窒执行位置

yirld from --将一个可迭代对象的元素逐个返回

2.推导式
list:[变量(加工后的变量)for循环 加工条件]
dict:{键:值 for循环 加工条件}
set:{变量(加工后的变量)for循环 加工条件}
生成器表达式:(变量(加工后的变量)for循环 加工条件)

1.不同循环推导
2.筛选推导

推导式测试
li = [i*i for i in range(1,11)]
print(li)

li = [i*i for i in range(1,20) if i % 2 == 0]
print(li)

1-24期添加到列表中
li = [f"python{i}" for i in range(1,25)]
print(li)

把列表中大于3的元素留下来
lst = [123,4,22,512,1,4,1,2,3,1,2,]
print([i for i in lst if i > 3])

本文地址:http://ww.kub2b.com/quote/11628.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号