Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 리스트에서 숫자가 포함된 행 제거하기

리스트 안에 숫자가 포함된 행(하위 리스트)을 제거해야 하는 경우, 리스트 컴프리헨션(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))처럼 튜플 형태로 여러 타입을 지정할 수 있습니다.