95253


与えられた変数がリストで、リスト内の要素がすべて整数であることを判定したいです。

isinstanceでtype判定し、数値以外が混在し、sumが失敗すればTypeError例外。sumが成功し、結果がint型であれば、整数だと判断します。1.0などは意図的にfloatを含めたと判断してエラーとしています。  
作成したソースコードは、正しく動作しております。

もっと簡便に判定する方法はないでしょうか？

## ソースコード

[code]

    def check(int_list:list):
      if isinstance(int_list,list):
        try:
          s = sum(int_list)
          if not isinstance(s, int):
             raise Exception('整数のリストではありません。')
        except TypeError:
          raise Exception('整数のリストではありません。')
      else:
        raise Exception('リストではありません。')
    
      return int_list
    
[/code]


CC BY-SA 4.0
2023-06-16T01:03:11.410
95252
2023-06-16T22:19:51.737
2023-06-16T22:19:51.737
3054
32891
question
python python3
与えられたリストがすべて整数であることを判定する方法


本家SOに、ご質問に合致する[回答](https://stackoverflow.com/a/13252348)がありました。  
組み込み関数の[all](https://docs.python.org/ja/3/library/functions.html#all)を使って
`all({判定} for x in list)` のように判定することで、リストの全項目が判定条件を満たすかチェックすることができます。

[code]

    int_list = [1,2,3]
    is_all_int = all(isinstance(x, int) for x in int_list)
    print(is_all_int) # True
    
    float_list = [1,2,3, 4.5]
    is_all_int = all(isinstance(x, int) for x in float_list)
    print(is_all_int) # False
    
    obj_list = [1,2,3, "4"]
    is_all_int = all(isinstance(x, int) for x in obj_list)
    print(is_all_int) # False
    
[/code]


CC BY-SA 4.0
2023-06-16T01:21:21.813
95253
2023-06-16T01:31:11.557
2023-06-16T01:31:11.557
9820
9820
95252
answer