2016-10-01 11 views
-3

リストを繰り返し処理し、値が文字列かintかをチェックする必要があります。これをPythonで簡単に行う方法はありますか?例えばリストに文字列が含まれているかどうかをチェックする方法

[1,2,3]本当だろう。

["a",2,3]となります。

+0

なぜこれが必要ですか?代わりに例外を処理するほうがよいかもしれません。 http://stackoverflow.com/questions/12265451/ask-forgiveness-not-permission-explain –

+1

私の意見では、最初にいくつかのコードを書こうとしていて、失敗した試みを投稿したはずです。 SOはコード作成サービスではありません。 –

答えて

3

あなたがany()isinstance()の組み合わせを使用することができます。

In [1]: def contains_string(l): 
    ...:  return any(isinstance(item, basestring) for item in l) 
    ...: 

In [2]: contains_string([1,2,3]) 
Out[2]: False 

In [3]: contains_string(['a',2,3]) 
Out[3]: True 

basestringハンドル "ユニコード" と "STR" の文字列型の両方:

any()ことショートサーキットは、同様に、それは結果を知っていると、ここでその詳細を参照してください。

6

あなたは短絡一度偽の条件が満たされるでしょうallを使用して、これを行うことができます。同様allを呼び出すとき

>>> my_list = [1, 2, 3] 
>>> all(type(d) == int for d in my_list) 
True 

>>> my_list = ['1', 2, 3] 
>>> all(type(d) == int for d in my_list) 
False 

isinstanceを使用することができる:あなたは、彼らがすべての整数だった場合にのみ、リストのすべての値を通過していることを確認する必要があることを意味と仮定すると、

>>> my_list = [1, 2, 3] 
>>> all(isinstance(d, int) for d in my_list) 
True 

>>> my_list = ['1', 2, 3] 
>>> all(isinstance(d, int) for d in my_list) 
False 
0

機能だろうTrueを返す、これは私がそれをする方法です:

def test(list): 
    result=True 
    for elem in list: 
     if type(elem)!=int: 
      result=False 
    return result 
関連する問題