2:使用def report(index): if index % 1000 == 0: print(index)def process(token, index, report=None): if report: report(index) return token['text']l1 = [{'text': k} for k in range(5000)]l2 = [process(token, i, report) for i, token in enumerate(l1)]
and和
or声明
3:同时使用def process(token): return token['text']l1 = [{'text': k} for k in range(5000)]l2 = [(i % 1000 == 0 and print(i)) or process(token) for i, token in enumerate(l1)]
def process(token): return token['text']def report(i): i % 1000 == 0 and print(i)l1 = [{'text': k} for k in range(5000)]l2 = [report(i) or process(token) for i, token in enumerate(l1)]
所有3种方法均可打印:
01000200030004000
2如何运作
i % 1000 == 0 and print(i)
:and
只检查了第二份声明,如果第一个是True
因此只有当打印i % 1000 == 0
or process(token)
:or
始终检查两个语句,但返回第一个值True
。- 如果
i % 1000 != 0
是False
,则将第一个语句process(token)
添加到列表中。 - 否则,第一个语句是
None
(因为print
returnNone
),同样,该or
语句添加process(token)
到列表中
- 如果
3如何运作
与2类似,因为
report(i)没有
return任何作用,它等于
None并
or添加
process(token)到列表中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)