<개인공부>/[Python]

[python] 파이썬 리스트 합치기 (+, extend, sum)

BlockDMask 2021. 7. 23. 00:30
반응형

안녕하세요. BlockDMask입니다.
오늘은 파이썬에서 리스트를 합치는 방법에 대해서 알아보겠습니다.

<목차>
1. +로 리스트 합치는 방법 
2. extend로 리스트 합치기
3. sum으로 이중 리스트 합치기 

 

1. 파이썬 리스트 붙이기 (+ 이용)


+ 기호를 이용하면 리스트를 간단하게 연결할 수 있습니다.
리스트 1 + 리스트 2 이런 식으로 사용하면 됩니다.

대신 이 방법은 + 덧셈 연산을 통해서 새로운 리스트를 만들기 때문에 반환해서 새 리스트로 받을 변수를 만들어 주어야 합니다.
바로 코드로 보겠습니다.

a = [7, 6, 5, 4]
b = [1, 2, 3]

result1 = a + b
result2 = b + a

print(f'a + b = {result1}')
print(f'b + a = {result2}')

이렇게 + 덧셈 연산을 통해서 리스트를 합칠 수 있습니다.
연결 순서에 따라서 연결된 리스트의 내부 내용이 다른 것을 확인할 수 있습니다.

 

 

2. 파이썬 리스트 합치기 (extend 이용)


리스트의 메서드를 이용해서 리스트를 합칠 수 있습니다.
리스트 메서드 중에 extend라는 것이 있습니다.

해당 메서드, 함수를 사용하게 되면 원본 리스트에 리스트를 연결할 수 있습니다.

사용방법
원본리스트.extend(연결할리스트)
이런 방식으로 사용하면 됩니다.

예제 코드를 보겠습니다.

a = [7, 6, 5, 4]
b = [1, 2, 3]
c = [0, 0, 0, 0, 0]

# 리스트 a 에 b를 연결 합니다. a 리스트가 변경됨.
a.extend(b)
print(f"a.extend(b) -> a : {a}")

# 리스트 b에 c를 연결 합니다. b 리스트가 변경됨.
b.extend(c)
print(f"b.extend(c) -> b : {b}")

앞서 했던 + 방법은 리스트를 합쳐서 새로운 리스트를 생성하는 것과 달리
리스트1.extend(리스트2) 방법은 리스트1에 리스트2를 붙이게 됩니다.
즉, 리스트1 이 변경되는 방법입니다.

리스트를 합칠 때는 덧셈(+) 방법과 extend 방법을 구분해서 사용하시면 좋을 것 같습니다.

 

 

3. 파이썬 중첩 리스트 합치기 (sum 이용)


sum 함수를 이용해서 중첩된 리스트 2차원 리스트를 더 할 수 있습니다.

sum 함수의 기본 모양은 아래와 같습니다.

sum(덧셈할 것)
sum(덧셈할 것, 처음에 더할 것)

우리는 이 두 번째 인자를 통해서 작업을 할 것입니다.
만약에 sum([1,2,3]) 을 한다면 해당 함수의 반환 값은 1 + 2 + 3 이어서 6이 나오겠죠?

두 번째 인자로 처음에 더할 값을 넣어준다면
sum([1,2,3], 1000)의 결과 값은 1000 + 1 + 2 + 3 이어서 1006 이 나오게 됩니다.

우리는 이 성질을 이용해서 리스트들을 합쳐서 연결할 수 있습니다.

a = [[1,2], [3,4,5]]라는 2중 리스트가 존재한다고 하면
sum(a, []) 를 입력하게 되면 [] + [1, 2] + [3, 4, 5]가 되어서 [1, 2, 3, 4, 5] 가 되겠죠?
네 sum 함수이지만 내부적으로 합치기 1번 방법인 + 기호를 이용한 것입니다.

"그럼 왜 sum(a)는 안되고 sum(a, [])로만 리스트를 합칠 수 있느냐?" 하는 물음이 있을 수 있는데요.
sum 함수는 기본적으로 int 들의 덧셈으로 계산을 하려고 합니다. (두 번째 인자 디폴트 값이 0)

그래서 sum(a)를 하면 내부적으로 int 덧셈을 하려고 하는데 갑자기 [1,2] 이런 리스트가 나오기 때문에 오류가 발생합니다.
(sum에 두 번째 인자에 아무것도 넣지 않는다면 디폴트 값으로 0이 들어가게 됩니다. 그렇기 때문에 0 + [1,2] 이런 식이 되므로 오류가 발생한 것입니다)

그래서 sun(a, []) 로 뒤에 초기 덧셈을 넣어주게 되면 "아 리스트 덧셈을 하려고 하는구나"라고 명확하게 알려줌으로써 sum 함수가 리스트 덧셈을 하게 됩니다.

정리하자면 sum(a)는 0 + [1,2] + [1,2,3] 이런 식이 어서 "int 랑 list 랑 어떻게 더하냐 -> 너 오류" 이런 식이고
sum(a, [])는 [] + [1,2] + [1,2,3] 이렇게 명확하게 리스트끼리 덧셈이 되므로 리스트 합치기가 가능한 것입니다.

이제 글로 그만 떠들고 코드로 말하겠습니다.

my_list = [[7, 6], [5, 4], [1, 2, 3], ['a', 'b']]
print(my_list)

result = sum(my_list, [])
print(result)

이렇게 깔끔하게 2차원 리스트들이 sum함수에 의해서 1차원 리스트로 연결된 것을 볼 수 있습니다.

이렇게 sum 함수를 이용해서 리스트를 연결할 수 도 있습니다.
파이썬 sum 함수에 대해서 더 궁금하시다면 [바로가기] 포스팅에서 확인 가능합니다.

 

이렇게 리스트를 하나의 리스트로 만드는 방법에 대해서 알아보았습니다.
추가적으로 리스트에 대해서 더 궁금하시다면 [바로가기] 해당 포스팅에 리스트를 정리해두었습니다.
감사합니다.

반응형