在C++中,我经常使用以下模式:
while (int i = getNextElementPlease()) {
printf("%d\n", i);
}
Run Code Online (Sandbox Code Playgroud)
但是在python中我必须重复两次调用:
i = getNextElementPlease()
while (i):
print(i)
i = getNextElementPlease()
Run Code Online (Sandbox Code Playgroud)
如何避免重复getNextElementPlease?
use*_*ica 12
与经典while True/ break模式:
while True:
i = getNextElementPlease()
if not i:
break
...
Run Code Online (Sandbox Code Playgroud)
或者使用双参数形式iter从函数中构建迭代器:
for i in iter(getNextElementPlease, sentinel):
...
Run Code Online (Sandbox Code Playgroud)
哪里sentinel是你期望终止循环的任何价值.可能是类似的东西None.迭代器将调用getNextElementPleaseget元素并在getNextElementPlease返回sentinel值时停止.
sch*_*ggl 10
目前,此模式的最少重复版本(并且经常出现)如下:
while True:
i = getNextElementPlease()
if not i:
break
print(i)
Run Code Online (Sandbox Code Playgroud)
然而,展望未来,Python 3.8将通过pep-572引入赋值表达式,它将允许:
while i := getNextElementPlease():
print(i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |