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

Python 튜플 행렬에서 동일한 요소로만 구성된 행 제거하기

튜플 행렬(tuple matrix)에서 모든 요소가 동일한 행을 제거해야 하는 경우, 리스트 컴프리헨션(list comprehension)과 all() 메서드를 조합하면 간단하게 해결할 수 있습니다.

리스트 컴프리헨션은 반복문을 한 줄로 간결하게 표현할 수 있는 파이썬 문법으로, 시퀀스를 순회하면서 원하는 연산을 수행할 때 매우 유용합니다.

all() 메서드는 이터러블(iterable) 내부의 모든 값이 참(True)인지 검사합니다. 모든 값이 참이면 True를 반환하고, 하나라도 거짓(False)이 포함되어 있으면 False를 반환합니다.

아래는 실제 구현 예시입니다.

예제 코드

my_tuple_1 = ((11, 14, 0), (78, 33, 11), (10, 78, 0), (78,78,78))

print("The tuple of tuples is : ")
print(my_tuple_1)

my_result = tuple(ele for ele in my_tuple_1 if not all(sub == ele[0] for sub in ele))

print("The tuple after removing like-element rows is: ")
print(my_result)

출력 결과

The tuple of tuples is :
((11, 14, 0), (78, 33, 11), (10, 78, 0), (78, 78, 78))
The tuple after removing like-element rows is:
((11, 14, 0), (78, 33, 11), (10, 78, 0))

코드 설명

  • 중첩된 튜플(nested tuple)을 정의한 뒤 콘솔에 출력합니다.
  • 바깥 튜플을 순회하면서 각 내부 튜플(행)에 대해 all() 메서드를 호출합니다. 여기서는 각 요소가 해당 행의 첫 번째 요소(ele[0])와 같은지 비교합니다.
  • all()이 True를 반환한다는 것은 그 행의 모든 요소가 서로 동일하다는 의미이므로, not 연산자를 사용해 이러한 행을 필터링하여 제외합니다.
  • 필터링 결과를 생성자 tuple()로 감싸 다시 튜플 형태로 변환합니다.
  • 최종 결과를 변수에 할당한 후 콘솔에 출력합니다.

위 예제에서는 마지막 행인 (78, 78, 78)처럼 모든 요소가 같은 행만 걸러져 제거되고, 나머지 행들은 그대로 유지됩니다. 이 방식은 데이터 전처리 과정에서 중복·편향된 행을 걸러낼 때 특히 유용합니다.