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

Python 리스트에서 문자열을 제외하고 숫자 값만 합산하는 방법

Python에서는 문자열과 숫자가 섞여 있는 리스트를 다루는 경우가 종종 있습니다. 이 글에서는 그러한 리스트에서 문자열은 무시하고 숫자 값만 추출하여 합계를 구하는 방법을 소개합니다.

filter와 isinstance 함수 활용

isinstance 함수를 사용하면 리스트의 요소 중 숫자(int) 타입만 걸러낼 수 있습니다. 여기에 filter와 lambda를 조합해 숫자만 남긴 뒤, sum 함수로 최종 합계를 구하면 됩니다.

예제 코드

listA = [1,14,'Mon','Tue',23,'Wed',14,-4]
# 주어진 리스트
print("Given list: ",listA)
# 숫자 값만 더하기
res = sum(filter(lambda i: isinstance(i, int), listA))
print ("Sum of numbers in listA: ", res)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given list: [1, 14, 'Mon', 'Tue', 23, 'Wed', 14, -4]
Sum of numbers in listA: 48

for 루프(리스트 컴프리헨션) 활용

filter 대신 for 루프 기반의 리스트 컴프리헨션을 사용하는 방법도 있습니다. 리스트를 순회하면서 isinstance 조건으로 숫자만 선택한 후, sum 함수를 적용하여 합계를 계산합니다.

예제 코드

listA = [1,14,'Mon','Tue',23,'Wed',14,-4]
# 주어진 리스트
print("Given list: ",listA)
# 숫자 값만 더하기
res = sum([x for x in listA if isinstance(x, int)])
print ("Sum of numbers in listA: ", res)

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given list: [1, 14, 'Mon', 'Tue', 23, 'Wed', 14, -4]
Sum of numbers in listA: 48

두 방법 모두 동일한 결과인 48을 반환합니다. filter 방식은 함수형 스타일에 적합하고, 리스트 컴프리헨션 방식은 가독성이 좋아 많이 선호됩니다. 상황에 맞게 선택하여 사용하시면 됩니다.