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

파이썬에서 두 리스트의 요소별 합 구하기: 3가지 방법

파이썬에서는 두 개의 리스트를 더하여 각 리스트의 요소들이 모두 포함된 새로운 리스트를 생성할 수 있습니다. 두 리스트를 더하는 방법은 여러 가지가 있으며, 아래에서 대표적인 세 가지 방법을 하나씩 살펴보겠습니다. 단, 어떤 방법을 사용하든 두 리스트의 길이가 동일해야 한다는 점에 유의해야 합니다.

1. append() 함수 활용하기

append() 메서드를 사용하면 반복문을 통해 두 리스트의 같은 인덱스에 있는 요소들을 하나씩 더해 새로운 리스트를 만들 수 있습니다. 가장 기본적이고 직관적인 방법입니다.

예제

List1 = [7, 5.7, 21, 18, 8/3]
List2 = [9, 15, 6.2, 1/3,11]
# 원본 리스트 출력
print ("list1 : " + str(List1))
print ("list2 : " + str(List2))
newList = []
for n in range(0, len(List1)):
    newList.append(List1[n] + List2[n])
print(newList)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

list1 : [7, 5.7, 21, 18, 2.6666666666666665]
list2 : [9, 15, 6.2, 0.3333333333333333, 11]
[16, 20.7, 27.2, 18.333333333333332, 13.666666666666666]

2. map()과 add() 함수 활용하기

operator 모듈의 add() 함수를 map() 함수와 함께 사용하면 두 리스트의 요소를 간결하게 더할 수 있습니다. map() 함수는 첫 번째 매개변수로 add 함수를 받아, 두 리스트에서 같은 인덱스에 위치한 요소들을 서로 더한 결과를 반환합니다.

예제

from operator import add
# 리스트의 두 요소 더하기
List1 = [7, 5.7, 21, 18, 8/3]
List2 = [9, 15, 6.2, 1/3,11]
# 원본 리스트 출력
print ("list1 : " + str(List1))
print ("list2 : " + str(List2))
NewList = list(map(add,List1,List2))
print(NewList)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

list1 : [7, 5.7, 21, 18, 2.6666666666666665]
list2 : [9, 15, 6.2, 0.3333333333333333, 11]
[16, 20.7, 27.2, 18.333333333333332, 13.666666666666666]

3. zip()과 sum() 함수 활용하기

앞선 방법과 유사하게 zip()과 sum()을 리스트 컴프리헨션(for 루프)과 함께 사용할 수 있습니다. zip()으로 두 리스트의 같은 인덱스에 있는 요소들을 쌍으로 묶은 후, 각 쌍에 sum()을 적용하여 합계를 구합니다. 이 방법은 코드가 가장 짧고 파이썬다운(Pythonic) 스타일로 평가받습니다.

예제

# 리스트의 두 요소 더하기
List1 = [7, 5.7, 21, 18, 8/3]
List2 = [9, 15, 6.2, 1/3,11]
result = [sum(n) for n in zip(List1, List2)]
print(result)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다:

[16, 20.7, 27.2, 18.333333333333332, 13.666666666666666]