파이썬 배열 필터링하기

다음과 같은 파이썬 프로그램을 만들어 봅시다.

  • 배열 arr_a에는 1부터 9까지의 자연수를 대입
  • 배열 arr_b에는 arr_a에서 짝수만 추출하여 대입
  • 위의 두 배열을 나란히 출력

이 프로그램을 다소 기초적인 방식으로 코딩하면 일단 다음과 같이 할 수 있겠습니다.

arr_a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr_b = []
for x in arr_a:
  if x % 2 == 0:
    arr_b.append(x)
print(arr_a)
print(arr_b)

이 코드의 첫 줄에서는 arr_a 배열에 1부터 9까지의 자연수를 하나씩 넣고 그 다음 줄에서 arr_b 배열은 일단 빈 배열로 정의해 놓습니다.
그리고 arr_a 배열의 원소들을 하나씩 차례로 x에 대입하는 반복문을 만들고 x를 2로 나눈 나머지가 0이면(즉, 짝수면) arr_b에 추가합니다.
이게 끝나면 arr_a와 arr_b의 내용을 화면에 출력합니다.

이 프로그램의 결과는,

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 4, 6, 8]

이렇게 됩니다.

위 방법보다 좀 더 깔끔한 방법이 있습니다. 파이썬은 for 반복문을 배열 안에서도 쓸 수 있다는 특징이 있는데 이를 이용해서 다음과 같이 코딩할 수도 있습니다.

arr_a = [x for x in range(1, 10)]
arr_b = [x for x in arr_a if x % 2 == 0]
print(arr_a)
print(arr_b)

첫 번째 줄에서 arr_a 배열에 자연수를 넣는 방법이 달라졌습니다. 1부터 시작해서 10이 되기 전까지 반복해서 원소를 넣습니다. 여기서는 1부터 9까지 하나씩 들어갑니다. 만약 99개라면 1, 2, 3, …, 97, 98, 99 이런 식으로 일일이 다 넣기보다는 당연히 [x for x in range(1, 100)] 식으로 한 줄에 해결하는 것이 좋을 것입니다.
그리고 arr_b에서는 arr_a의 원소들을 하나씩 x로 놓되 x의 값이 짝수일 경우에 한정한다는 뜻입니다.
3번 줄과 4번 줄은 앞의 코드와 같습니다.

이 코드로 실행해도 결과는 역시 앞의 코드와 같습니다.

“파이썬 배열 필터링하기”의 1개의 생각

답글 남기기

이메일 주소는 공개되지 않습니다.