파이썬 리스트 합치기: 설명과 예제
이번 포스팅은 파이썬 리스트 합치기 관련 다음의 내용을 다룹니다.
join()
함수로 리스트 원소 합치기 (문자열, 숫자)join()
함수에서 다양한 구분자 사용하기 ("
,'
,,
,공백
)- 리스트 안에 리스트 합치기
- 리스트 합치기 과정에 중복 제거
- 리스트 인덱스 기준으로 합치기 (
map()
활용)
주로, 리스트 내의 원소를 합치는 방법과 여러 개의 리스트 자체를 합치는 방법을 살펴보겠습니다.
리스트에 새로운 원소를 추가하는 방법은 이 포스트를 참고해주세요.
1. join()
함수로 리스트 문자열 원소 합치기
파이썬에서 join
메서드는 문자열을 이용하여 리스트의 요소를 합치는 기능을 제공합니다.
특히, 리스트의 각 요소를 지정된 구분자로 구분하여 하나의 문자열로 합칩니다.
간단한 예제로 설명해보겠습니다. 다음과 같은 리스트가 있다고 가정해봅시다:
fruits = ['apple', 'banana', 'orange']
우리는 이 리스트의 요소들을 콤마로 구분하여 하나의 문자열로 합치고 싶다습니다. 이를 위해 join()
메서드를 사용할 수 있습니다:
result = ', '.join(fruits)
print(result)
# Output: apple, banana, orange
여기서 ', '
는 구분자로 사용되었고, join()
메서드는 fruits
리스트의 요소를 콤마와 공백으로 구분하여 하나의 문자열로 합쳤습니다.
주의할 점은 join
메서드를 사용하려면 합쳐야 하는 리스트의 모든 요소가 문자열이어야 한다는 것입니다. 그렇지 않은 경우에는 메서드를 사용하기 전에 각 요소를 문자열로 변환해야 합니다.
2. 리스트 숫자 합치기
리스트의 숫자를 합치는 방법은 원하는 결과에 따라 달라집니다.
각 숫자를 하나의 문자열로 합치려면 join()
메서드를 사용할 수 있습니다.
리스트의 각 숫자를 더한 값을 얻고자 한다면, sum()
함수 혹은 reduce()
함수를 활용할 수 있습니다.
하니씩 살펴봅시다.
2.1. 문자열로 합치기
섹션 1에서 보았듯이, join()
메서드를 사용하기 위해서는, 리스트의 각 요소를 문자열로 변환해야 합니다.
아래 예제에서는 제너레이터 문법을 이용해 모든 솟자 원소를 문자열로 변환합니다.
numbers = [1, 2, 3, 4, 5]
combined = ''.join(str(num) for num in numbers)
print(combined)
# Output: 12345
각 요소를 문자열로 변환하기 위해 str(num)
을 사용하고, 이를 join()
메서드로 합쳐서 숫자들을 하나의 문자열로 만듭니다.
2.2. 합계 구하기
리스트의 속한 수들의 합계를 구하는 방법은 다양하게 존재합니다. 대표적인 2가지만 보겠습니다.
첫번째로, 파이썬 내장 함수 sum()
을 이용해 간단하게 합계를 구할 수 있습니다.
numbers = [1, 2, 3, 4, 5]
sum_of_numbers = sum(numbers)
print(sum_of_numbers)
# Output: 15
두번째는, reduce()
함수를 이용해 함수형 프로그래밍 스타일의 코드를 작성하는 방법입니다.
reduce()
함수는 functools
모듈에서 제공되는 함수로, 리스트의 요소들을 반복적으로 결합하면서 하나의 결과를 생성하는 기능을 제공합니다.
이 함수를 사용하여 리스트의 숫자들을 합쳐서 하나의 숫자로 만들 수 있습니다.
예제로 확인하겠습니다.
from functools import reduce
numbers = [1, 2, 3, 4, 5]
reduce(lambda x,y: x + y, numbers)
print(combined)
# Output: 15
reduce()
함수를 잘 활용하면, 다음과 같이 새로운 알고리즘을 작성할 수도 있습니다.
from functools import reduce
numbers = [1, 2, 3, 4, 5]
combined = reduce(lambda x, y: x * 10 + y, numbers)
print(combined)
# Output: 12345
lambda x, y: x * 10 + y
함수를 이용하여 요소들을 반복적으로 결합하고, 하나의 숫자로 만들었습니다.
각 요소에 10을 곱한 후 다음 요소와 더하여 12345
라는 결과를 만들었습니다.
3. 리스트 안에 리스트 합치기
두 개의 리스트를 혹은 리스트 안에 리스트를 합치는 방법은 다양합니다. 여러 가지 방법 중에서 몇 가지를 소개해드리겠습니다.
3.1. +
연산자를 사용하는 방법
가장 간단한 방법은 +
연산자를 사용하여 두 개의 리스트를 합치는 것입니다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)
# Output: [1, 2, 3, 4, 5, 6]
이 방법은 원래의 리스트를 변경하지 않으며, 새로운 합쳐진 리스트를 생성합니다.
3.2. extend()
메서드를 사용하는 방법
extend()
메서드는 리스트에 다른 리스트의 요소들을 추가하는 방법입니다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print(list1)
# Output: [1, 2, 3, 4, 5, 6]
extend()
메서드를 사용하면 list1
에 list2
의 요소들을 추가할 수 있습니다. 이 방법은 list1
이 변경되며, 새로운 리스트를 생성하지 않습니다.
3.3. 리스트 결합 연산자를 사용하는 방법
리스트 결합 연산자 *
를 사용하여 두 개의 리스트를 결합할 수도 있습니다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
print(combined)
# Output: [1, 2, 3, 4, 5, 6]
이 방법도 원래의 리스트를 변경하지 않으며, 새로운 합쳐진 리스트를 생성합니다.
4. 리스트 합치기 시, 중복 제거
두 개의 리스트를 합칠 때 중복을 제거하는 방법도 여러 가지가 있습니다. 다음은 몇 가지 예시입니다.
4.1. 집합(Set)을 이용하는 방법
집합(Set)은 원소의 중복을 허용하지 않는 특징을 가지고 있습니다. 이를 이용하여 두 개의 리스트를 집합으로 변환한 후 다시 리스트로 변환하면 중복이 제거된 리스트를 얻을 수 있습니다.
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
combined = list(set(list1 + list2))
print(combined)
# Output: [1, 2, 3, 4, 5, 6, 7, 8]
먼저 list1
과 list2
를 +
연산자를 이용하여 합칩니다.
그런 다음 set()
함수를 사용하여 합쳐진 리스트를 집합으로 변환하고, 다시 list()
함수를 사용하여 리스트로 변환합니다.
이렇게 하면 중복이 제거된 리스트를 얻을 수 있습니다.
4.2. 리스트 컴프리헨션을 이용하는 방법
리스트 컴프리헨션을 사용하여 중복을 제거할 수도 있습니다. 이를 위해 두 개의 리스트를 합친 후 조건을 추가하여 중복을 필터링합니다.
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
combined = [x for x in list1 + list2 if x not in list1 or x not in list2]
print(combined)
# Output: [1, 2, 3, 6, 7, 8]
list1
과 list2
를 +
연산자로 합친 후,
리스트 컴프리헨션을 사용하여 각 요소가 list1
에는 없거나 list2
에는 없는 요소만 포함된 리스트를 생성합니다. 이렇게 하면 중복이 제거된 리스트를 얻을 수 있습니다.
5. 리스트 인덱스 기준으로 합치기
다음은 map()
함수와 zip
함수를 사용하여 두 개 이상의 리스트를 합치는 방법입니다.
map()
함수는 여러 개의 리스트를 받아서 각 리스트의 요소를 합치는 함수를 적용하고, 그 결과로 새로운 리스트를 생성합니다.
zip()
함수는 동일한 인덱스의 요소들을 묶어 튜플로 만들어 줍니다.
이 두 가지 함수를 함께 사용하면 아래 예제와 같은 결과를 얻을 수 있습니다.
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]
combined = list(map(list, zip(list1, list2, list3)))
print(combined)
# Output: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
zip(list1, list2, list3)
는 각 리스트의 동일한 인덱스 요소들을 묶어 튜플로 만듭니다.
map(list, ...)
는 이 튜플들을 리스트로 변환합니다.
따라서 combined
변수에는 list1
, list2{;Py}
, list3
의 같은 인덱스 요소들이 묶인 하위 리스트들이 저장됩니다.
마치며
지금까지 파이썬 리스트 합치기 관련 여러가지 궁금한 내용들을 알아보았습니다. 리스트의 요소들을 합치거나, 리스트 자체를 합치는 작업 시에 유용하게 활용하길 바랍니다.