bool()
并且operator.truth()
都测试一个值是真实的还是虚假的,它们看起来与文档相似,它甚至在truth()
文档中说:
这相当于使用bool构造函数.
但是,truth()
它的速度bool()
是简单测试的两倍(显示的是Python 3.6时序,但2.7类似):
from timeit import timeit
print(timeit('bool(1)', number=10000000))
# 2.180289956042543
print(timeit('truth(1)', setup='from operator import truth', number=10000000))
# 0.7202018899843097
Run Code Online (Sandbox Code Playgroud)
那有什么区别?我应该用truth()
而不是bool()
吗?
在此问题下与ShadowRanger进行广泛的评论和讨论之后,出现了此问答.
我有一个名为 values 的列表,其中包含一系列数字:
values = [0, 1, 2, 3, 4, 5, ... , 351, 0, 1, 2, 3, 4, 5, 6, ... , 750, 0, 1, 2, 3, 4, 5, ... , 559]
Run Code Online (Sandbox Code Playgroud)
我想创建一个新列表,其中包含从 0 到一个数字的元素列表。
喜欢 :
new_values = [[0, 1, 2, ... , 351], [0, 1, 2, ... , 750], [0, 1, 2, ... , 559]]
Run Code Online (Sandbox Code Playgroud)
我所做的代码是这样的:
start = 0
new_values = []
for i,val in enumerate(values):
if(val == 0):
new_values.append(values[start:i])
start = i
Run Code Online (Sandbox Code Playgroud)
但是,它返回的是:
new_values = [[], …
Run Code Online (Sandbox Code Playgroud)