使用Python 2.6,有没有办法在一个语句中检查序列的所有项是否等于给定值?
[pseudocode]
my_sequence = (2,5,7,82,35)
if all the values in (type(i) for i in my_sequence) == int:
do()
Run Code Online (Sandbox Code Playgroud)
而不是说:
my_sequence = (2,5,7,82,35)
all_int = True
for i in my_sequence:
if type(i) is not int:
all_int = False
break
if all_int:
do()
Run Code Online (Sandbox Code Playgroud) Python程序中的一个iterable和一个array_like对象有什么区别Numpy?
双方iterable并array_like经常看到的Python文档和他们分享一些相似的性质.
我知道在这种情况下,array_like对象应该支持Numpy类型操作,如广播,但是Numpy数组区域也是可迭代的.说这array_like是一个扩展(或超集?)是正确的iterable吗?
和其他人的代码一起工作,我偶然发现了这个问题.那么numpy行为的解释是什么?
In [1]: import numpy as np
In [2]: foo = [False, False]
In [3]: print np.any(x == True for x in foo)
True # <- bad numpy!
In [4]: print np.all(x == True for x in foo)
True # <- bad numpy!
In [5]: print np.all(foo)
False # <- correct result
Run Code Online (Sandbox Code Playgroud)
ps我从这里得到了列表理解代码:检查列表是否只包含项目x