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

Python – 리스트에서 특정 데이터 유형의 행만 추출하는 방법

파이썬(Python)에서 중첩된 리스트 안에 있는 여러 행(하위 리스트) 중에서 특정 데이터 유형으로만 구성된 행을 추출해야 하는 경우가 있습니다. 이럴 때는 리스트 컴프리헨션(list comprehension), isinstance() 메서드, 그리고 all() 연산자를 함께 사용하면 간단하고 효율적으로 처리할 수 있습니다.

아래는 실제 동작 예시입니다.

예제 코드

my_list = [[14,35, "Will"], [12, 26, 17], ["p", "y", "t"], [29, 40, 21]]

print("원본 리스트 :")
print(my_list)

my_data_type = int

my_result = [row for row in my_list if all(isinstance(element, my_data_type) for element in row)]

print("추출 결과 :")
print(my_result)

실행 결과

원본 리스트 :
[[14, 35, 'Will'], [12, 26, 17], ['p', 'y', 't'], [29, 40, 21]]
추출 결과 :
[[12, 26, 17], [29, 40, 21]]

코드 설명

  • 먼저 문자열과 정수가 섞여 있는 리스트의 리스트를 정의한 뒤, 콘솔에 출력하여 원본 데이터를 확인합니다.
  • 추출하고 싶은 데이터 유형을 변수로 지정합니다. 이 예제에서는 int(정수형)로 설정했습니다.
  • 리스트 컴프리헨션을 사용해 원본 리스트의 각 행(row)을 하나씩 순회합니다.
  • all() 연산자와 isinstance() 메서드를 조합하여, 해당 행의 모든 요소가 지정된 데이터 유형인지 검사합니다. 만약 하나라도 다른 유형이 포함되어 있으면 all()은 False를 반환합니다.
  • 검사를 통과한 행(모든 요소가 지정된 유형인 행)만 새로운 리스트에 추가되고, 결과 변수에 할당됩니다.
  • 마지막으로 필터링된 결과를 콘솔에 출력합니다.

이 방식의 장점은 코드가 한 줄로 간결하면서도 가독성이 뛰어나다는 점입니다. my_data_type 값을 str, float 등 다른 유형으로 바꾸기만 하면 원하는 데이터 유형의 행을 손쉽게 추출할 수 있어 재사용성도 매우 좋습니다.