33

Python 2.6を使用して、シーケンスのすべての項目が1つのステートメントで指定された値に等しいかどうかを確認する方法はありますか?

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

4 に答える 4

61

使用する:

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

[編集]。コメントに従ってきれいになりました。

于 2009-01-01T21:45:31.037 に答える
14

意味ですか

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

編集:に変更されましたis。少し速い。

于 2009-01-01T21:43:29.697 に答える
10

私は提案します:

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

allany2006 年にPython 2.5 (Raymond Hettinger によって実装された機能)で初めて登場しました。
古いバージョンの Python を使用している場合、リンクはサンプル実装を提供します。

isinstanceのサブクラスもキャッチするので、使用することもお勧めしintます。

于 2009-01-01T23:06:42.167 に答える