当前位置: 移动技术网 > IT编程>脚本编程>Python > 生成器,推导式以及内置函数一

生成器,推导式以及内置函数一

2019年07月19日  | 移动技术网IT编程  | 我要评论

武汉音乐学院网站,阿米尼电动车怎么样,dygod电影天堂

生成器,推导式以及内置函数一

1.生成器

迭代器:python中内置的一种节省空间的工具.

生成器的本质就是一个迭代器.

迭代器和生成器的区别:一个是python自带的,一个是程序员自己写的.

#在函数中将return改写为yield就是一个生成器
#yield 会记录执行位置
#return 和 yield 都是返回
#return 可以写多个,但是只执行一次,yield可以写多个,还可以返回多次
#一个__next__()对应一个 yield
#生成器可以使用for循环获取值
#yield from --将可迭代对象逐个返回
#在函数的内部yield能将for循环和while循环进行临时暂停
#定义一个生成器:1.基于函数 
#             2.函数体中存在yield就是一个生成器
#             3.函数名() 就是产生一个生成器

写一个生成器:
    
def func():
    print(123)
    yield "你好"
func()              # 产生一个生成器

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


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

坑 --会生成新的生成器
print(foo().__next__())
print(foo().__next__())


#  send()
def func():
    a = yield "send"
    print(a)
g = func()
print(g.send(none))    # 打印出 send
print(g.send(123))     # 报错

# 生成器的应用场景:

def func():
    lst = []
    for i in range(10):
        lst.append(i)
    return lst
print(func())        #[0,1,2,3,4,5,6,7,8,9]

def func():
    for i in range(10):
        yield i
g = func()
for i in range(5):
    print(next(g))
    
def func():
    lst = ["你","我","他","它"]
    for i in lst:
        yield i
g = func()
print(next(g))           # 你
print(next(g))           # 我
print(next(g))           # 他
print(next(g))           # 它

def func():
    lst1 = ["你","我","它"]
    lst2 = ["他","她","昵"]
    yield from lst1          # yield 将可迭代对象逐个返回
    yield from lst2
g = func()
print(next(g))        # 你
print(next(g))        # 我
print(next(g))        # 它

2.推导式

list推导式:
[变量(加工后的变量) for循环]
[变量(加工后的变量) for循环 加工条件]
生成器表达式:
(变量(加工后的变量) for循环)
(变量(加工后的变量) for循环 加工条件)
字典推导式:
{键:值 for循环 加工条件}
集合推导式:
{变量(加工后的变量) for循环 加工条件}


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

循环模式
print([i+1 for in range(10)])
[变量 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循环 加工方式]

生成器表达式:

循环模式:
g = (i for i in range(20))
print(next(g))
print(next(g))
print(next(g))

print(list(i for i in range(20)))

筛选模式
g = (i for i in range(50) if i % 2 == 0 )
for i in g:
    print(i)
    
字典推导式:
print({i:i+1 for i in range(10)})
{键:值 for循环 加工条件}

集合推导式:
print({i for i in range(10)})
print({i for i in range(10) if i % 2 == 0})

3.内置函数一

# eval()   执行字符串类型的代码,并返回最终结果
s = "2+2"
print(eval(s))   #4

# exec()   执行字符串类型的代码
s = '''
for i in [1,2,3]
    print(i)
'''
print(exec(s))  # 1 2 3            #工作中禁止使用

#hash()    获取一个对象(可哈希对象)的哈希值
print(hash(1))

#help()    用于查看函数或模块用途的详细说明
print(help(list))

#callable() 函数用于检查一个对象是否是可调用的,true仍可能调用失败
#             false也不一定绝对成功
name = "alex"
def func():
    pass
print(callable(name))     # false
print(callable(func))     # true

#int()    将一个字符串或数字转换成整型  
print(int('12'))  # 12

#float()  用于将整数和字符串转换成浮点数
print(float(2))  # 2.0

#complex()   用于转换一个字符串或数为复数
print(complex(1,2))    # (1+2j)

#bin()  将十进制转换成二进制字符串并返回
print(bin(10))    # 0b1010

#oct()  将十进制转换成八进制字符串并返回
print(oct(10))   # 0o12

#hex() 将十进制转换成十六进制字符串并返回
print(hex(10))   # 0xa

#divmod() 获取商和余
print(divmod(7,2)) # (3,1)

#round() 保留浮点数的小数位数,默认保留整数
print(round(7/3,2))  #2.33

#pow()    求幂
print(pow(2,3))  # 两个参数为2**3次幂
print(pow(2,3,3))  # 三个参数为2**3次幂,对3取余。

#bytes()  用于不同编码之间的转化
s = '你好'
bs = s.encode('utf-8')
print(bs)

#ord() 输入字符找当前字符编码的位置
print(ord('a'))  # 97

#chr() 输入当前编码的位置数字找出其对应的字符
print(chr(20013))  # 中

#repr() 返回一个对象的string形式(原形)
s = "c:\u3000"
print(repr(s))     # 'c:\u3000'

#all() 可迭代对象中,全都是true才是true
print(all([1,2,true,0]))   #false

#any() 可迭代对象中,有一个true就是true
print(any([1,'',0]))    # true

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网