345*_*345 13 python yield generator
我有一个for循环来检查一系列条件.在每次迭代时,它应仅为其中一个条件产生输出.如果没有条件为真,则最终产量是默认值.在每块收益率之后我是否必须继续?
def function():
for ii in aa:
if condition1(ii):
yield something1
yield something2
yield something3
continue
if condition2(ii):
yield something4
continue
#default
yield something5
continue
Run Code Online (Sandbox Code Playgroud)
fla*_*shk 16
而不是使用continue声明我建议使用elif和else声明:
def function():
for ii in aa:
if condition1(ii):
yield something1
yield something2
yield something3
elif condition2(ii):
yield something4
else: #default
yield something5
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎更具可读性
Anu*_*yal 16
不,产量并不意味着继续,它只是从下一行开始,下一次.一个简单的例子证明了
def f():
for i in range(3):
yield i
print i,
list(f())
Run Code Online (Sandbox Code Playgroud)
这打印0,1,2,但如果产量继续,则不会
小智 12
yield在Python中停止执行并返回值.再次调用迭代器时,它会在yield语句后直接继续执行.例如,一个生成器定义为:
def function():
yield 1
yield 2
Run Code Online (Sandbox Code Playgroud)
1然后2顺序返回.换句话说,这continue是必需的.但是,在这种情况下,elif并且else正如所描述的flashk绝对是正确的工具.
| 归档时间: |
|
| 查看次数: |
9275 次 |
| 最近记录: |