生成器-内置函数1

一、生成器

生成器?:python,生成器与迭代器看成一种。生成器的本质就是迭代器。

唯一的区别:生成器是我们自己用python代码构建的数据结构。迭代器都是提供的,或者转化得来的。

获取生成器的三种方式:

1、生成器函数

2、生成器表达式

3、python内部提供的一些。

生成器函数。

yield:

只要函数中有yield那么它就是生成器函数。

生成器函数中可以存在多个yield,yield不会结束生成器函数,一个yield对应一个next

正常情况下:

def func():
    print('111')
    print('222')
    return 3333
​
ret = func()
print(ret)
# 输出
111
222
3333

生成器函数:

def func():
    print('111')
    print('222')
    yield 3333
    yield 4444
    yield 5555
​
ret = func()
print(next(ret))        # 一个yield对应一个next
print(next(ret))
# 输出
111
222
3333
4444

yield return

return:函数只存在一个return结束函数,并且给函数的执行者返回值。

yield:只要函数中有yield那么它就是生成器而不是函数了。

生成器函数中可以存在多个yield,yield不会结束生成器函数,一个yield对应一个next

yield from

将列表变成了迭代器返回。

def func():
    ll = [1, 2, 3, 4, 5, 6]
    yield from ll
​
ret = func()
print(next(ret))
print(next(ret))
print(next(ret))
# 输出:
1
2
3

二、列表推导式

用一行代码构建一个比较复杂有规律的列表。

循环模式:[变量(加工后的变量) for 变量 in iterable]

ll = [i for i in range(100)]
print(ll)
# 输出
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9......99]

多层循环:留下name里面有两个e的名字。

names = [['Tom', 'Villy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
​
ll = [n.upper() for i in names for n in i if n.count('e') >= 2 ]
print(ll)
# 输出
['JEFFERSON', 'WESLEY', 'STEVEN', 'JENNIFER']

筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]

ll = [i for i in range(100) if i % 2 == 0 ]
print(ll)
# 输出
[0, 2, 4, 6, 8, 10, 12, 14, 16......98]

三、生成器表达式

与列表推导式的写法一模一样,也有筛选模式,循环模式,多层循环结构。

就是把列表推导式的 [ ] 括号换成()

ll = (i for i in range(100) if i % 2 == 0 )
​
print(next(ll))
print(next(ll))
print(next(ll))
# 输出
0
2
4

字典推导式。(方便)

l1 = ['jay', 'jj', 'meet']
l2 = ['周杰伦', '凌俊杰', '小宝']
​
dic = {l2[i]:l1[i] for i in range(3)}
​
print(dic)
# 输出
{'周杰伦': 'jay', '凌俊杰': 'jj', '小宝': 'meet'}

四、内置函数(1)

python提供了68个内置函数。

大部分了解即可。

eval:——剥去字符串的外衣运算里面的代码,有返回值。(危险别用,特别是有网络)

exec:——与eval几乎一样,代码流

hash:——获取一个对象的哈希值(和哈希算法)

help:——获取函数或模块的使用说明。

callable:——检查一个对象是否可调用。

int:——将一个字符串或数字转换成整型。取整

float:——函数用于将整数和字符串转换成浮点数。

complex:——复数

bin:——将十进制转化成二进制

cot:——十进制转化成八进制

hex:——将十进制转化成十六进制

divmod:——除数与被除数的结果(商几余几)

round:——保留浮点数的小数的位数

pow:——求x的y次幂(x**y)

bytes:——用于不同的编码转换

ord:——输入字符找该字符编码的位置(是Ascii就找ASCII不是就找Uicode)

chr:——输入位置数字找出其对应的字符 (UIcode)

repr:——返回一个对象的string形式(原形毕露)

all:——可迭代对象中,全都是True才是True

any:——可迭代对象中,有一个True就是True

学习之旅
原文地址:https://www.cnblogs.com/XiaoYang-sir/p/14675601.html