리스트 안에 숫자가 포함된 행(하위 리스트)을 제거해야 하는 경우, 리스트 컴프리헨션(list comprehension)과 함께 not 연산자 및 any 함수를 활용하면 간단하게 처리할 수 있습니다.
예제
아래는 실제 동작 예시입니다.
my_list = [[14, 'Pyt', 'fun'], ['Pyt', 'is', 'best'], [23, 51], ['Pyt', 'fun']]
print("원본 리스트 :")
print(my_list)
my_result = [index for index in my_list if not any(isinstance(element, int) for element in index)]
print("결과 리스트 :")
print(my_result)출력 결과
원본 리스트 : [[14, 'Pyt', 'fun'], ['Pyt', 'is', 'best'], [23, 51], ['Pyt', 'fun']] 결과 리스트 : [['Pyt', 'is', 'best'], ['Pyt', 'fun']]
코드 설명
리스트 안에 여러 개의 하위 리스트로 구성된 중첩 리스트를 정의한 뒤, 콘솔에 출력합니다.
리스트 컴프리헨션을 사용하여 원본 리스트의 각 행(하위 리스트)을 순회합니다.
any()함수 내부에서isinstance(element, int)를 통해 해당 행의 각 요소가 정수(int) 타입인지 검사합니다.행 안에 하나라도 정수가 존재하면
any()가 True를 반환하고,not연산자에 의해 조건이 False가 되어 해당 행은 결과에서 제외됩니다.반대로 숫자가 전혀 포함되지 않은 행만 필터링되어 새로운 리스트에 저장되고, 변수에 할당됩니다.
마지막으로 필터링된 최종 결과가 콘솔에 출력됩니다.
핵심 포인트
isinstance()는 요소의 자료형을 확인하는 파이썬 내장 함수입니다.any()는 반복 가능한 객체 중 하나라도 참인 요소가 있으면 True를 반환합니다.만약 실수(float)까지도 제거하고 싶다면
isinstance(element, (int, float))처럼 튜플 형태로 여러 타입을 지정할 수 있습니다.