生成器函数进阶,

def gener():

print(‘草莓味’)

yield 1

print(‘香蕉味’)

yield 2

print(‘榴莲味’)

yield 3

g = gener()

num = g.next()

num = g.next()

num = g.next()

print(num)

for num in g:

print(’ num)

def gener():

print(‘草莓味’)

yield 1

# smell = yield 1

# print(smell)

print(‘可乐味’)

smell2 = yield 2

print(smell2)

yield 3

g = gener()

print(g.next())

ret = g.send(‘香蕉味’) # g.__next__只不过传了一个值进去

print(ret)

ret2 = g.send(‘榴莲味’)

print(ret2)

计算移动平均值的例子

1,2,3,4,5

(1+2+3+4+5)/5

存过钱

利息 时时刻刻改变 7日年化收益

11.6 2017.11.6 11:09 - 2018.11.6 11:09

n分钟的平均值已经计算出来

你现在给我一个今天的值

根据之前的平均值给你算一个值出来

1

2

1+2 = 3

3/2

3

3 +3 = 6

6/3

4

6+4 = 10

10/4

计算移动平均值的例子

def cal_avg():

sum_n = 0

count = 0

while True:

if count:

num = yield sum_n/count # 7/1 num = 9 16/2 = 8 num = 8 24/4 = 8

else:

num = yield 0 # num = 7

sum_n += num # sum_n = 7 + 9 = 16 +8 = 24 +10

count += 1 # count = 1 + 1 = 2 + 1 = 3 + 1

# 7,9,8,10

g = cal_avg()

g.next() # 0

avg1 = g.send(7)

print(avg1)

avg2 = g.send(9)

print(avg2)

avg3 = g.send(8)

avg3 = g.send(10)

yield

生成器函数怎么调用,怎么从中取值

send/yield from

def func():

l1 = [1,2,3]

s2 = ‘abc’

l1.extend(s2)

for i in l1:

yield i

g = func()

for i in g:

print(i)

def func():

l1 = [1,2,3]

s2 = ‘abc’

for i in l1:

yield i

for j in s2:

yield j

g = func()

for i in g:

print(i)

def func():

l1 = [1,2,3]

s2 = ‘abc’

yield from l1

yield from s2

g = func()

for i in g:

print(i)

int 整数

float 浮点数

1.2

2.3333344

256.789 = 2.56789*10**2

为什么要叫浮点数 : 因为小数点是浮动的

浮点数能表示的数学上的数字 : 有理数(有限小数 无限循环小数)

浮点数的小数点是不准确的 : 小数的小数位是转换成二进制存储

a = 1.7265923649689710283508127969

a = 1.111111111188818181818111624

print(a)

转换成字符串存储

‘1.71264864975975073507505’

如果你创建的变量本身带小数点,那么这个变量的数据类型直接就是浮点数

所有的除法(除了//)得到的都是小数

除法

python2.x 整数除以整数就会取整(向下取整),有一个数浮点数,就按照浮点数计算

python3.x 所有的除(除了//)的结果都是小数

生成器函数中

send/next 生成器函数之外用的

yield/yield from 生成器函数之内用的

next+send == yield

如果函数中的yield要接收参数,那么应该使用send传值

如果函数中的yield不需要接收参数,那么应该使用next即可

生成器和迭代器是一样的,内部的值都只能取一次

从生成器中取值的方式也和迭代器是一样的:

# for
# next/send
# 数据类型的强制转换(list)

猜你喜欢

转载自blog.csdn.net/HZY199321/article/details/83792935