2017-11-30 15 views
0

私はデータ構造とアルゴリズムを学び、リストをデータ型に分離するためのクイックコードを開始することに決めました。私の目標は、リスト内の各値をチェックし、if文がint、bool、string、またはfloatのいずれであるかを判断するループを持つことです。なぜ、私は最終的な "else"ステートメントを実行するので、条件文のあるものはオフになっています。ループでデータ値が認識されないのはなぜですか?

myList = ['test',3,True,'chicken',False,95,33/4,.02,'rabbit',False] 
myInts = [] 
myBools = [] 
myStrings = [] 
myFloats = [] 

for a in myList: 
    if a == int: 
    myInts.append(a) 
    elif a == bool: 
    myBools.append(a) 
    elif a == str: 
    myStrings.append(a) 
    else: 
    myFloats.append(a) 

print('Ints:', myInts) 
print('Bools:',myBools) 
print('Strings:',myStrings) 
print('Floats:',myFloats) 
+1

数は 'int'、' bool'、 'str'、' float'、または 'str'になることはありません。それらは型であり、値は型と同じではありません。 'type(a)is int'などを使用してください。 – kindall

+2

代わりに 'isinstance(a、bool)'などを使用してください。 –

+1

[Pythonで型をチェックする標準的な方法は何ですか?](https://stackoverflow.com/questions/152580/whats-the-canonical- way-to-check-for-python) – mkrieger1

答えて

2

あなたはタイプを決定するために、type(x)を使用する必要があります。 あなたが本当にやりたいことは、使用:isinstance(a, int)です。あなたは==オペレータが型をチェックしません

+0

isinstance(a、int)を使用する方が良いか、type(a)== intを使う方が良いですか? – DeathPox

+0

あなたは 'isinstance()'を使うことができます。 – DSCH

-1

など、ブール値、などstrと任意の型であることを第二引数を変更することができますどこaの値はstrの値に等しい場合、それはチェックしています彼らは平等ではありません。詳細はthis questionをチェックしますが、一般的に次のようにタイプチェックすることができます。

isinstance(a, str) 
+0

'str'はOPのために定義されていませんが、あなたのために定義されていますか? –

+0

strは変数ではなく型です。 – DeathPox

関連する問題