HOWTO · Python
Python에서 목록 연합 가져오기
목록의 합집합은 다른 목록의 모든 요소가 단일 목록에 포함될 것임을 반영합니다.
이 페이지의 내용
Python에서 +는 두 리스트를 연결합니다. 두 번째 리스트의 항목을 첫 번째 리스트 뒤에 배치하며, 중복된 값도 그대로 유지합니다. 이는 서로 다른 값만 한 번씩 남기고 순서를 보장하지 않는 수학적 집합 합집합과 다릅니다. 순서와 중복을 유지하려면 리스트 연결을, 정렬된 값이 필요하면 sorted()를, 중복 없는 해시 가능한 값이 필요하면 set()을 사용하세요. 아래 예제는 각각 독립적으로 실행할 수 있으며 결과를 보여 줍니다.
+로 두 리스트를 연결하고 중복 유지하기
+를 사용하면 두 리스트의 순서와 각 항목의 출현 횟수를 그대로 유지하면서 리스트를 결합할 수 있습니다. 결과는 새 리스트이므로 두 입력 리스트도 이후에 계속 사용할 수 있습니다.
first = ["red", "blue"]
second = ["blue", "green"]
combined = first + second
print(combined)
['red', 'blue', 'blue', 'green']
결과 리스트에는 first의 항목이 먼저 나오고 그 뒤에 second의 항목이 이어집니다. 두 입력에 모두 있으므로 "blue"는 두 번 나타납니다. 이는 각 값을 한 번만 남기는 합집합이 아니라 리스트 연결입니다.
결합한 리스트 정렬하기
먼저 리스트를 연결한 다음, 결과를 Python의 내장 함수 sorted()에 전달하세요. 이 함수는 입력을 변경하지 않고 오름차순으로 정렬된 새 리스트를 반환합니다. 정렬해도 중복은 제거되지 않으므로 각 항목은 출현한 횟수만큼 결과에 남습니다.
first = [11, 20, 1, 2, 3, 4, 5]
second = [2, 4, 6, 8, 10]
combined = first + second
sorted_combined = sorted(combined)
print(sorted_combined)
[1, 2, 2, 3, 4, 4, 5, 6, 8, 10, 11, 20]
숫자는 수치상 오름차순으로 정렬됩니다. 정렬할 값끼리는 서로 비교할 수 있어야 합니다. 예를 들어 Python은 정수와 문자열 사이에 일반적인 오름차순을 정의하지 않습니다.
두 리스트를 결합하고 중복 제거하기
연결한 리스트에 set()을 적용해 집합으로 변환하세요. 코드의 나머지 부분에서 리스트가 필요하다면 집합을 다시 리스트로 변환하면 됩니다. 집합에는 서로 다른 값이 하나씩만 남지만, 순회 순서는 보장되지 않습니다. 집합의 원소는 해시 가능해야 하므로 숫자나 문자열에는 이 방법을 쓸 수 있지만, 중첩 리스트에는 사용할 수 없습니다.
first = [1, 2, 3, 4, 5]
second = [2, 4, 6, 8, 10]
unique_values = list(set(first + second))
print(unique_values)
[1, 2, 3, 4, 5, 6, 8, 10]
값의 위치보다 중복 없는 값의 포함 여부가 중요할 때 이 방법을 사용하세요. 결합한 값도 정렬해야 한다면 결과 리스트에 sorted()를 명시적으로 적용하세요.
두 개보다 많은 리스트를 결합하고 중복 제거하기
입력이 여러 개라면 집합에 union()을 호출하고 각 리스트를 인수로 전달하세요. union()은 집합 메서드로, 여러 반복 가능한 객체를 받아 서로 다른 해시 가능한 값을 담은 집합을 반환합니다. 반환 형식으로 리스트가 필요하면 결과를 리스트로 변환하세요. 두 리스트 예제와 마찬가지로 출력 순서는 보장되지 않습니다.
first = [1, 2, 3, 4, 5]
second = [2, 4, 6, 8, 10]
third = [5, 6, 7, 8, 11, 15, 18]
unique_values = list(set().union(first, second, third))
print(unique_values)
[1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 15, 18]
리스트를 더 추가하려면 union()에 또 다른 인수로 전달하세요. 값이 해시 불가능하다면 적절한 해시 가능 표현으로 변환하거나 다른 중복 제거 방법을 사용하세요. 집합에는 변경 가능한 리스트나 딕셔너리를 직접 담을 수 없습니다.