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

Python 리스트에서 양수와 음수 개수 세는 3가지 방법

이 글에서는 Python 리스트에 담긴 숫자들 중 양수와 음수가 각각 몇 개인지 세는 방법을 다양한 접근 방식과 함께 알아보겠습니다.

문제 정의 — 하나의 리스트(iterable)가 주어졌을 때, 그 안에서 양수와 음수의 개수를 각각 계산하여 화면에 출력하는 것이 목표입니다.

방법 1 — for 반복문을 이용한 완전 탐색

가장 기본적인 방식은 for 반복문으로 리스트의 각 요소를 순회하면서 num >= 0 조건을 검사해 양수를 걸러내는 것입니다. 조건이 참이면 pos_count를 1 증가시키고, 그렇지 않으면 neg_count를 1 증가시킵니다.

예제 코드

list1 = [1,-2,-4,6,7,-23,45,-0]
pos_count, neg_count = 0, 0
# 향상된 for 반복문
for num in list1:
    # 양수 여부 검사
    if num >= 0:
        pos_count += 1
    else:
        neg_count += 1
print("리스트의 양수 개수: ", pos_count)
print("리스트의 음수 개수: ", neg_count)

실행 결과

Positive numbers in the list: 5
Negative numbers in the list: 3

방법 2 — while 반복문을 이용한 완전 탐색

for 문 대신 while 반복문을 사용할 수도 있습니다. 인덱스 변수를 직접 관리하면서 각 요소에 대해 같은 조건 검사를 수행하고, 한 번의 순회가 끝날 때마다 인덱스를 1씩 증가시킵니다. 로직 자체는 방법 1과 동일합니다.

예제 코드

list1 = [1,-2,-4,6,7,-23,45,-0]
pos_count, neg_count = 0, 0
num = 0
# while 반복문
while(num < len(list1)):
    # 양수 여부 검사
    if list1[num] >= 0:
        pos_count += 1
    else:
        neg_count += 1
    # 인덱스 증가
    num += 1
print("리스트의 양수 개수: ", pos_count)
print("리스트의 음수 개수: ", neg_count)

실행 결과

Positive numbers in the list: 5
Negative numbers in the list: 3

방법 3 — filter와 람다(Lambda) 표현식 활용

Python다운 간결한 코드를 원한다면 filter() 함수와 람다 표현식을 조합하는 방법이 좋습니다. 조건에 맞는 요소만 남긴 뒤 그 길이를 재면, 반복문 없이도 양수와 음수를 손쉽게 분류하고 개수를 셀 수 있습니다.

예제 코드

list1 = [1,-2,-4,6,7,-23,45,-0]
neg_count = len(list(filter(lambda x: (x < 0), list1)))
pos_count = len(list(filter(lambda x: (x >= 0), list1)))
print("리스트의 양수 개수: ", pos_count)
print("리스트의 음수 개수: ", neg_count)

실행 결과

Positive numbers in the list: 5
Negative numbers in the list: 3

위 예제들에서 사용된 모든 변수는 지역 범위(local scope) 안에서 선언되며, 별도의 전역 상태 없이 독립적으로 동작합니다.

마무리

이번 글에서는 for 반복문, while 반복문, 그리고 filter와 람다 표현식을 활용해 Python 리스트 안의 양수와 음수 개수를 세는 세 가지 방법을 살펴보았습니다. 초보자에게는 반복문 방식이 로직을 이해하기에 좋고, 실무에서는 filter와 람다를 조합한 방식이 더욱 간결하고 가독성이 뛰어나므로 상황에 맞게 선택하시기 바랍니다.