Zoo*_*tor 25 python python-2.6
使用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)
Aut*_*tic 55
使用:
all( type(i) is int for i in lst )
Run Code Online (Sandbox Code Playgroud)
例:
In [1]: lst = range(10)
In [2]: all( type(i) is int for i in lst )
Out[2]: True
In [3]: lst.append('steve')
In [4]: all( type(i) is int for i in lst )
Out[4]: False
Run Code Online (Sandbox Code Playgroud)
[编辑].根据评论制作清洁剂.
S.L*_*ott 14
你的意思是
all( type(i) is int for i in my_list )
Run Code Online (Sandbox Code Playgroud)
?
编辑:已更改为is
.稍快一些.
我会建议:
if all(isinstance(i, int) for i in my_list):
Run Code Online (Sandbox Code Playgroud)
all
并any
于2006年首次出现在Python 2.5中(由Raymond Hettinger实现的功能).
如果您使用的是旧版本的Python,则链接会提供示例实现.
我也建议使用,isinstance
因为它也会捕获子类int
.