41

この質問は気が遠くなるほど単純に思えますが、私には理解できません。Pythonでデータ型を確認できることは知っていますが、データ型に基づいて条件を設定するにはどうすればよいですか? たとえば、辞書/リストを並べ替えてすべての整数を合計するコードを作成する必要がある場合、検索を分離して整数のみを探すにはどうすればよいでしょうか?

簡単な例は次のようになると思います。

y = []
for x in somelist:
    if type(x) == <type 'int'>:  ### <--- psuedo-code line
    y.append(x)
print sum(int(z) for z in y)

では、3 行目では、そのような条件をどのように設定すればよいでしょうか?

4

6 に答える 6

72

どうですか、

if isinstance(x, int):

しかし、よりクリーンな方法は単に

sum(z for z in y if isinstance(z, int))
于 2013-01-01T18:46:08.317 に答える
-1

演算子の両側で type 関数を使用できます。このような:

if type(x) == type(1):
于 2013-01-01T19:49:11.560 に答える
-1

使いやすいタイプ。

import types
k = 5
if(type(k)==types.IntType):
   print "int"

ここに簡単なdir(types)があります:

['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
于 2013-01-01T19:39:03.747 に答える