1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python字典生成器_Python字典生成式 集合生成式 生成器用法实例分析

python字典生成器_Python字典生成式 集合生成式 生成器用法实例分析

时间:2018-09-23 02:07:00

相关推荐

python字典生成器_Python字典生成式 集合生成式 生成器用法实例分析

本文实例讲述了Python字典生成式、集合生成式、生成器用法。分享给大家供大家参考,具体如下:

字典生成式:

跟列表生成式一样,字典生成式用来快速生成字典,不同的是,字典需要两个值

#d = {key: value for (key, value) in iterable}

d1 = {"x": 1, "y": 2, "z": 3}

d2 = {k: v for (k, v) in d1.items()}

print(d2)

集合生成式:

集合生成式格式和列表生成式类似,不过用的是大括号:

s1={x for x in range(10)}

print(s1)

生成器:

生成器是一种迭代过程才生成对应元素的可迭代对象

生成器的元素在访问前不会生成,只有当访问时才会生成,如果继续向后访问,那么当前的元素会销毁。

生成器的一种生成方式是将列表生成式改为小括号包裹:

print("-----使用()列表生成式生成generator------")

g=(x*x for x in range(10))

print(type(g),g)

print(next(g),next(g),next(g))

生成器本质上是一个函数

当一个生成器被调用时,它返回一个生成器对象,而不用执行该函数。 当第一次调用 next()方法时,函数向下执行,如果遇到yield则返回 yield 后面的值。 再次调用next()方法时,函数从上次结束的位置继续向下执行,如果遇到yield则返回 yield 后面的值。

可以使用yield来定义一个生成器:

print("

----使用yield生成generator-------")

def ge():

print("第一次yield")

yield 1

print("第二次yield")

yield 2

print("第三次yield")

yield 3

o = ge()

print(next(o))

print(next(o))

print(next(o))

运行结果:

----使用yield生成generator-------

第一次yield

1

第二次yield

2

第三次yield

3

生成器本质上是一个函数,如果想要获取这个函数的返回值,我们需要使用异常捕获来获取这个返回值:

def fib(max):

n,a,b = 0,0,1

while n

yield b

a,b =b,a+b

n = n+1

return "done"

print("

-----尝试获得函数返回值------")

gg=fib(6)

while True:

try:

x=next(gg)

print("g:",x)

except StopIteration as e:

print("返回值等于:",e.value)

break

既可以使用next()来迭代生成器,也可以使用for来迭代:

def ge():

print("第一次yield")

yield 1

print("第二次yield")

yield 2

print("第三次yield")

yield 3

o = ge()

print("

---迭代generator的方法--------")

for x in o:

print(x)#相当于进入到generator函数中,执行下去并得到返回值

结果:

---迭代generator的方法--------

第一次yield

1

第二次yield

2

第三次yield

3

由于生成器的特性,可以进行”协程“操作:后续补充

更多关于Python相关内容可查看本站专题:《Python列表(list)操作技巧总结》、《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。