生成器函数的进阶和表达式and各种推导式

生成器函数的进阶

send的效果与作用范围和next一模一样

send获取下一个值的效果和next基本一致

第一次不能用send

函数中的最后一个yield不能接收新的值

只是再获取下一个值的时候,给上一个yield的位置传递一个数据

使用send的注意事项

  #第一次使用生成器的时候,是用next获取下一个值

  #最后一个yield不能接收外部的值

def generator():
    print(123)
    content = yield 1
    print(‘=======‘,content)
    print(456)
    arg = yield 2
    ‘‘‘‘‘‘
    yield
# g1 = generator()
# g2 = generator()
# g1.__next__()
# g2.__next__()
# print(‘********‘,generator().__next__())
# print(‘********‘,generator().__next__())
g = generator()
ret = g.__next__()
print(‘***‘,ret)
ret = g.send(‘hello‘)
print(‘***‘,ret)

各种推导式

egg_list=[‘鸡蛋%d‘%i for i in range(10)]
print(egg_list)
g = (i for i in range(10))
print(g)        #生成器的内存地址
for i in g:
    print(i)

    #与列表生成器的区别:括号不一样,返回的值=======几乎不占内存

各种推导式

  [满足条件的元素相关的操作  for   元素   in     可迭代的数据类型     if    元素相关的条件]

生成器注意

1》生成器中的数据只能取一次,取完就没了。

2》惰性运算。

原文地址:https://www.cnblogs.com/qinghuani/p/8184240.html

时间: 2024-10-09 10:00:20

生成器函数的进阶和表达式and各种推导式的相关文章

python——函数 20、三元表达式、列表推导式、生成器表达式

1.三元表达式 # 什么是三元表达式 三元:三个元素 x=1 y=2 if x>y: print(x) else : print(y) # 变为三元表达式: hhh=x if x>y else y print(hhh) # 简单明了 ———————————————————————————————————— def max2(x,y): if x>y: return x else : return y print(max2(1,5)) # 变为三元表达式: def max2(x,y): r

三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数

一 三元表达式.列表推导式.生成器表达式 1.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2.语法 [expression for item1 in iterabl

Python3 三元表达式、列表推导式、生成器表达式

Python3 三元表达式.列表推导式.生成器表达式 三元表达式 表达式中,有三个元素 name = input("请输入姓名: ")ret = '输入正确' if name == 'aaa' else '输入错误'print(ret)  列表推导式 #1.示例# 方法1egg_list1 = []for i in range(10): egg_list1.append('鸡蛋%s' % i)print(egg_list1) #方法2egg_list2 = ['鸡蛋%s' %i for

六 三元表达式、列表推导式、生成器表达式

一 三元表达式 二 列表推导式 三 生成器表达式 一 三元表达式 1 name=input('姓名>>: ') 2 res='abc' if name == 'lucy' else 'jack' 3 print(res) 二 列表推导式 #1.示例 egg_list=[] for i in range(10): egg_list.append('鸡蛋%s' %i) egg_list=['鸡蛋%s' %i for i in range(10)] #2.语法 [expression for ite

三元表达式与列表推导式

目录 三元表达式(掌握) 列表推导式(掌握) 三元表达式(掌握) 条件成立时的返回值 if 条件 else 条件不成立时的返回值 x = 10 y = 20 print(f"x if x > y else y: {x if x > y else y}") x if x > y else y: 20 列表推导式(掌握) [expression for item1 in iterable1 if condition1 for item2 in iterable2 if c

生成器表达式,列表推导式

两者的区别在于一个用的是(),另外一个用B[] 生成器表达式: G = (x**2 for x in range(5)) 列表推导式: L = [x**2 for x in range(5)]

生成器表达式 和 列表推导式

列表推导式   [i** 2 for i in [1,2,3]] print(li) li2=[int(i/2) for i in range(0,7,2)] print(li2) 生成器表达式 # 生成器 表达式 简化代码 g=(i for i in range(5)) # 没有元组推导式 for i in g: print(i) 例子  0 list=[{'name':'alex','age':80},{'name':'egon','age':40},{'name':'neza','age'

三元表达式、列表推导式、生成器表达式

一.三元表达式的使用 name = 'alex' age = 20 if name == 'alex' else 22 print(age) 二.列表推导式(声明式编程) l = ['alex%s' %i for i in range(10) if i > 5] print(l) 三.生成器表达式 ball = ('球%s' %i for i in range(10)) print(ball) print(next(ball)) print(list(ball)) 原文地址:https://ww

生成器表达式和列表推导式

生成器表达式: >>> s = (i for i in range(10)) >>> print(s) 结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 列表推导式: >>> g = [i for i in range(10)] >>> print(g) 结果: <generator object <genexpr> at 0x0000026A0C17A318> 1.括号不一样 2.返回的值