当前位置:  开发笔记 > 编程语言 > 正文

如果列表中的所有==某事

如何解决《如果列表中的所有==某事》经验,为你挑选了3个好方法。

使用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()

而不是说:

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()

Autoplectic.. 55

使用:

all( type(i) is int for i in lst )

例:

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

[编辑].根据评论制作清洁剂.



1> Autoplectic..:

使用:

all( type(i) is int for i in lst )

例:

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

[编辑].根据评论制作清洁剂.


你可以省略列表理解!一个简单的生成器表达式就足够了(而且效率更高).

2> S.Lott..:

你的意思是

all( type(i) is int for i in my_list )

编辑:已更改为is.稍快一些.



3> tzot..:

我会建议:

if all(isinstance(i, int) for i in my_list):

allany于2006年首次出现在Python 2.5中(由Raymond Hettinger实现的功能).
如果您使用的是旧版本的Python,则链接会提供示例实现.

我也建议使用,isinstance因为它也会捕获子类int.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有