복붙노트

[PYTHON] 'int'유형의 목록에있는 모든 항목을 테스트하는 방법은 무엇입니까?

PYTHON

'int'유형의 목록에있는 모든 항목을 테스트하는 방법은 무엇입니까?

내가 숫자 목록을 가지고 있다고 해봐. 목록의 모든 항목이 int인지 확인하려면 어떻게해야합니까? 나는 주변을 수색했지만, 이것에 관해 무엇인가를 찾을 수 없었다.

for i in myList:
  result=isinstance(i, int)
  if result == False:
    break

작동하지만 매우 추악하고 내 의견으로는 만족스럽지 않습니다. 이 일을하는 데 더 나은 (그리고 더 비옥 한) 방법이 있습니까?

해결법

  1. ==============================

    1.

    >>> my_list = [1, 2, 3.25]
    >>> all(isinstance(item, int) for item in my_list)
    False
    
    >>> other_list = range(3)
    >>> all(isinstance(item, int) for item in other_list)
    True
    >>> 
    
  2. ==============================

    2.다음 진술이 효과가 있습니다. 그것은 builtin과 generator 식을 사용합니다 :

    다음 진술이 효과가 있습니다. 그것은 builtin과 generator 식을 사용합니다 :

    any(not isinstance(x, int) for x in l)
    

    목록에 int가 없으면 true를 반환합니다. 예 :

    >>> any(not isinstance(x, int) for x in [0,12.])
    True
    >>> any(not isinstance(x, int) for x in [0,12])
    False
    

    모든 내장 된 사람도 동일한 작업을 수행 할 수 있고, 어떤 사람들은 약간 더 의미가 있다고 주장 할 수도 있습니다 (Dragan의 대답 참조)

    all(isinstance(x,int) for x in l)
    
  3. ==============================

    3.

    In [1]: a = [1,2,3]
    
    In [2]: all(type(item)==int for item in a)
    Out[2]: True
    
  4. ==============================

    4.하나의 접근법은 테스트하는 것이 아니라 주장하는 것입니다. 이것은 프로그램이보다 광범위한 입력을 지능적으로 처리 할 수 ​​있음을 의미합니다. 누군가가 대신 부동 소수점을 전달하면 실패하지 않습니다.

    하나의 접근법은 테스트하는 것이 아니라 주장하는 것입니다. 이것은 프로그램이보다 광범위한 입력을 지능적으로 처리 할 수 ​​있음을 의미합니다. 누군가가 대신 부동 소수점을 전달하면 실패하지 않습니다.

    int_list = [int(x) for x in int_list]
    

    또는 (제자리에서) :

    for i, n in enumerate(int_list):
        int_list[i] = int(n)
    

    무언가가 변환 될 수 없다면 예외를 던져 버릴 수 있습니다.

  5. ==============================

    5.함수보기

    함수보기

    def is_int(x):
        if type(x) == int:
            return True
        return
    
    
    def all_int(a):
        for i in a:
            if not is_int(i):
                return False
        return True
    

    그럼 전화 해.

    all_int(my_list) # returns boolean
    
  6. ==============================

    6.

    lst = [1,2,3]
    lst2 = [1,2,'3']
    
    list_is_int = lambda lst: [item for item in lst if isinstance(item, int)] == lst
    
    print list_is_int(lst)
    print list_is_int(lst2)
    
    suxmac2:~$ python2.6 xx.py 
    True
    False
    

    .... 목록 이해 또는 필터 ()를 사용하는 많은 사람들 중에서 한 가지 해결책

  7. ==============================

    7.비슷한 상황이지만 약간 다른 조건에서 발견되었습니다. 목록의 "정수"가 문자열로 표시되고 목록 요소가 정수로 표시 될 수 있는지 단순히 확인하려는 경우 다음을 사용할 수 있습니다.

    비슷한 상황이지만 약간 다른 조건에서 발견되었습니다. 목록의 "정수"가 문자열로 표시되고 목록 요소가 정수로 표시 될 수 있는지 단순히 확인하려는 경우 다음을 사용할 수 있습니다.

    all(i.isdigit() for i in myList)
    

    예 :

    >>> myList=['1', '2', '3', '150', '500', '6']
    >>> all(i.isdigit() for i in myList)
    True
    
    >>> myList2=['1.5', '2', '3', '150', '500', '6']
    >>> all(i.isdigit() for i in myList2)
    False
    

    이것은 모든 요소를 ​​'string'유형으로 할당 한 텍스트 파일의 정수 행에 line.split ()을 사용한 후에 나에게 해당되는 경우입니다.

  8. from https://stackoverflow.com/questions/6009589/how-to-test-if-every-item-in-a-list-of-type-int by cc-by-sa and MIT license