我是靠谱客的博主 无奈微笑,最近开发中收集的这篇文章主要介绍Python 生成器 表达式 两个有难度的例子让你彻底明白!!语法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

语法

(返回值 for 元素 in 可迭代对象 if 条件)
(expr for iter_var in iterable)
(expr for iter_var in iterable if cond_expr])

列表解析式的中括号换成小括号就行了
返回一个生成器,生成器也是一个对象,属于中间值

可迭代对象

可迭代对象有:list、tuple、string、bytes、bytearray、range、set、dict、生成器等
其中序列有:list、tuple、string、bytes、bytearray

更复杂的筛选举例(多重条件判断可以放到for前面 的表达式中)

gen = (True if n%2==0 else False for n in range(100) if n % 3==0)
list(gen)
输出:
[True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False]

惰性测试(只是储存好了结构并未真实计算)

def add(a, b):
return a + b
def test():
for r in range(4):
yield r
g = test()
for n in [2, 10]:
g = (add(n, i) for i in g)
print(list(g))
输出:
[20, 21, 22, 23]

再来

w = 4
def add(a, b):
return a + b
def test():
for r in range(w):
yield r
g = test()
for n in [2, 10]:
g = (add(n, i) for i in g)
w = 6
print(list(g))
输出:
[20, 21, 22, 23, 24, 25]

再来(最难)

w = 4
def add(a, b):
return a + b
def test():
for r_i in range(w):
yield r_i
g = test()
print(list(g))#指针指到底了——>StopIteration
for n in [2, 10]:
g = (add(n, i) for i in g)
w = 6
print(list(g))
输出:
[0, 1, 2, 3]
[]

最后

以上就是无奈微笑为你收集整理的Python 生成器 表达式 两个有难度的例子让你彻底明白!!语法的全部内容,希望文章能够帮你解决Python 生成器 表达式 两个有难度的例子让你彻底明白!!语法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部