Built-in function generator derivation of formula (a)

1. Generator

Iterators and generators difference:

Iterator is a space-saving tools built into Python

The nature of the generator is a iterator

Iterator is Python comes

Is our generator (programmer) is written

Define a builder:

基于函数,
函数体中存在yield就是一个生成器
函数名() 就是产生一个生成器
def func():
    print(123)
    return "你好"
func()

def func():
    if 3>2:
        yield "你好"   #停
    if 4>2:
        yield "我好"
    yield "大家好"
g = func() # 产生一个生成器
print(g.__next__())
print(g.__next__())
print(g.__next__())
for i in g:
    print(i)

The nature of the for loop

while True:              
    try:
        print(g.__next__())
        except StopIterration:
            break

Builder advantages and Notes

Space-saving - inert mechanism

Not retrograde

Disposable

Corresponding to a yield a next

yield able to return to the content, but also be able to return many times

yield can temporarily stop the loop

A position capable of recording execution yield

output method

def foo():
    for i in range(10):
        pass
        yield i
    count = 1
    while True:
        yield count
        count += 1
g = foo()
print(next(g))  # ---- 推荐使用
print(next(g))
print(next(g))
print(next(g))
print(next(g))

### 坑
如果不用变量接受,直接输出
print(foo().__next__())
print(foo().__next__())
一直循环输出#9

Builder application scenarios

def func():
    lst = []
    for i in range(100000):
        lst.append(i)
    return  lst
print(func())
# 一次性打印全部结果,数据过大时特别消耗内存

def func():
    for i in range(100000):
        yield i
g = func()
for i in range(50):
    print(next(g))
# 每次打印可选的一部分,不用的部分不打印,节省空间

yield from
element to an iterator object returned by one

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

def func():
    lst1 = ["牛羊配","老奶奶花生米","卫龙","虾扯蛋","米老头","老干妈"]
    lst2 = ["小浣熊","老干爹","亲嘴烧","麻辣烫","黄焖鸡","井盖"]
    yield from lst1
    yield from lst2
g = func()
print(next(g))
print(next(g))
print(next(g))
print(next(g))

# 牛羊配
# 老奶奶花生米
# 卫龙
# 虾扯蛋
# 所以循环第一个列表直到全部打印再循环第二个

2. derivations

Cycle mode

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

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

[变量 for i in range(20)]

Screening mode

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

转换成list表达式
[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)])

Cycle mode

生成器:
g = (i for i in range(20))
print(next(g))
print(next(g))
print(next(g))
# 0 1 2 
转换成列表
print(list((i for i in range(20))))

Dictionary comprehension (understanding)

print({i:i+1 for i in range(10)})
print({i:i+1 for i in range(10) if i % 2 == 0})
{键:值 for循环 加工条件}

Set derivations (Learn)

print({i for i in range(10)})
print({i for i in range(10) if i % 2 == 0})

to sum up:

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

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

字典推导式:
{键:值 for循环 加工条件}

集合推导式:
{变量(加工后的变量) for循环 加工条件}

3. The built-in function (a)

eval() 执行字符串类型的代码,并返回最终结果
exec() 执行字符串类型的代码
以上两个函数很强大,工作中禁止使用

hash() 获取一个对象(可哈希对象:int,str,bool,tuple)的哈希值
help() 函数用于查看函数或模块用途的详细说明
callable() 函数用于检查一个对象是否是可调用的,如果返回True,仍然可能调用失败;但如果返回False,调用对象object绝对不会成功
int() 函数用于将一个字符串或数字转换为整型
float() 函数用于将整数和字符串转换成浮点数
complex:函数用于创建一个值为 real + imag*j 的复数.如果第一个参数为字符串,则不需要指定第二个参数
bin() 将十进制转换成二进制
oct() 将十进制转换成十六进制字符串并返回
divmod() 计算除数与被除数的结果,返回一个包含商和余数的元组
round() 保留浮点数的小数位数,默认保留整数
pow() 求x**y次幂
bytes() 用于不同编码之间的转化
ord() 输入当前编码的位置数字找出其对应的字符
repr() 返回一个对象的string形式
all() 可迭代对象中,全都是True才是True
any() 可迭代对象中,有一个True 就是True

Guess you like

Origin www.cnblogs.com/beichen123/p/11240853.html