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

Python – 모든 요소가 쌍을 이루는 행 추출하기

리스트 안에서 모든 요소가 짝수 개(쌍)로 등장하는 행만 골라내야 하는 경우, 파이썬에서는 리스트 컴프리헨션(list comprehension)과 내장 함수 all()을 조합하면 간단하게 해결할 수 있습니다.

예제 코드

다음은 실제 동작 예시입니다.

my_list = [[10, 21, 34, 21, 37], [41, 41, 52, 68, 68, 41], [12, 29], [30, 30, 51, 51]]

print("The list is :")
print(my_list)

my_result = [row for row in my_list if all(row.count(element) % 2 == 0 for element in row)]

print("The result is :")
print(my_result)

실행 결과

The list is :
[[10, 21, 34, 21, 37], [41, 41, 52, 68, 68, 41], [12, 29], [30, 30, 51, 51]]
The result is :
[[30, 30, 51, 51]]

동작 원리

  • 먼저 중첩 리스트(list of lists)를 정의하고, 원본 데이터를 콘솔에 출력합니다.
  • 리스트 컴프리헨션을 사용해 외부 리스트의 각 행(row)을 순회합니다.
  • all() 함수와 제너레이터 표현식을 통해 각 행의 모든 요소에 대해 count()로 개수를 세고, 그 개수가 2로 나누어 떨어지는지(즉, 짝수 개인지) 검사합니다.
  • 모든 요소가 짝수 개로 등장하는 행만 통과하며, 해당 행들은 새로운 리스트로 만들어져 변수에 할당됩니다.
  • 최종 결과가 콘솔에 출력됩니다.

위 예제에서 [30, 30, 51, 51]은 30이 두 번, 51이 두 번 등장하므로 모든 요소가 쌍을 이루며, 유일하게 조건을 만족하는 행입니다.