all()
,但是(对我来说)似乎应该有一种更具表现力的方法。我认为这有点类似于C语言中的memcmp()
。values = (0, 0, 0, 0, 0)
# Test if all items in values tuple are zero
if all([ v == 0 for v in values ]) :
print 'indeed they are'
我会期望有一个内置函数能够执行以下操作:def allcmp(iter, value) :
for item in iter :
if item != value :
return False
return True
这个函数在Python中是否存在,还是我视力有问题?或者我应该坚持使用原版?
更新
我并不建议使用all()
作为解决方案。它只是一个我认为可能更有意义的例子。这不是我建议为Python创建新内置函数的地方。
在我看来,all()
并没有那么有意义。它没有表达出“全部”正在检查什么。你可以假设all()
接受一个可迭代对象,但它并没有表达出这个函数正在寻找什么(一个由布尔值组成的可迭代对象,测试它们是否全部为True
)。我想要的是类似于我的allcmp()
的某个函数,它接受两个参数:一个可迭代对象和一个比较值。我想知道是否有类似于我虚构的allcmp()
的内置函数。
我将它称为allcmp()
是因为我有C语言的背景和memcmp()
,这个虚构函数的名称在这里并不重要。
all([v == 0 for v in values])
确实非常好,清晰明确且富有表现力。它还能更好吗? - S.Lottall
to be spelled "takes_an_iterable_of_bools_and_tests_all_of_them_for_True"? Is that what you're asking for?" “all()…不表达'all'的含义”?我看不出你想要表达什么。你是想让all
被拼写为“takes_an_iterable_of_bools_and_tests_all_of_them_for_True”吗?这是你想要的吗? - S.Lott