Python에서 문자열은 일련의 문자이고 목록은 문자열을 포함하여 모든 데이터 유형이 될 수 있는 요소의 모음입니다. 빼기 문자열 목록의 경우 두 항목 사이에 공통적인 요소를 제거하는 작업이 포함됩니다. 기울기 또는 문자열 .
하나의 문자열 목록을 다른 문자열 목록에서 빼려면 다음을 사용할 수 있습니다. '세트' Python의 데이터 유형. 집합 데이터 유형은 고유 요소의 순서가 지정되지 않은 모음입니다. 빼기 연산자 '-' 두 세트 사이에 두 번째 세트에 없는 첫 번째 세트의 요소를 찾기 위해 사용할 수 있습니다.
예:
다음은 set 데이터 유형을 사용하여 하나의 문자열 목록을 다른 문자열 목록에서 빼는 예입니다.
list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = list(set(list1) - set(list2)) print(result)
산출:
['apple', 'cherry']
위의 예에서는 두 개의 목록을 정의합니다. '시트1' 그리고 '목록2' . 그 후, 우리는 다음을 사용하여 각 목록을 세트로 변환합니다. '세트' 파이썬에서 함수. 그 후, 우리는 '-' 요소를 빼는 연산자 '목록2' ~에서 '시트1' . 마지막으로 다음을 사용하여 결과 집합을 다시 목록으로 변환합니다. '목록' 파이썬에서 함수.
그러면 새 목록이 생성됩니다. '결과' 의 요소를 포함하는 '시트1' 에 존재하지 않는 것 '목록2' , 이 경우에는 '사과' 그리고 '체리' .
예:
다음은 단일 문자열에서 문자열 목록을 빼는 방법을 보여주는 또 다른 예입니다.
string1 = 'Hello world!' list1 = ['o', 'l', 'd'] result = ''.join([char for char in string1 if char not in list1]) print(result)
산출:
'He wr!'
위의 예에서는 문자열을 정의합니다. '문자열1' 그리고 문자열 목록 '시트1' . 그런 다음 목록 이해를 사용하여 각 문자를 반복합니다. '문자열1' 그리고 그것이 존재하는지 확인하십시오 '시트1' . 해당 캐릭터가 없으면 '시트1' , 다음을 사용하여 새 목록에 추가합니다. '가입하다' 방법. 마지막으로 결과 목록을 다시 문자열로 변환합니다.
결과적으로 새로운 문자열이 생성됩니다. '결과' 다음 문자만 포함되어 있습니다. '문자열1' 에 존재하지 않는 것 '시트1' , 이 경우에는 'H', 'e', '', 'w' , 그리고 '아르 자형' .
결과 목록이나 문자열의 요소 순서가 유지되지 않을 수 있다는 점은 주목할 가치가 있습니다. 순서를 유지해야 하는 경우 목록 이해를 사용할 수 있습니다. '만약에' 두 번째 목록에 있는 요소를 필터링하는 문입니다.
예:
list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = [item for item in list1 if item not in list2] print(result)
산출:
['apple', 'cherry']
위의 예에서는 두 개의 목록을 정의합니다. '시트1' 그리고 '목록2' . 그런 다음 목록 이해를 사용하여 각 요소를 반복합니다. '시트1' 그리고 그것이 존재하는지 확인하십시오 '목록2' . 요소가 포함되지 않은 경우 '목록2' , 새 목록에 추가합니다. 마지막으로 다음 요소를 포함하는 결과 목록을 인쇄합니다. '시트1' 에 존재하지 않는 것 '목록2' .
기타 정보:
데이터 유형 설정 및 목록:
앞서 언급했듯이 문자열 목록을 뺄 때 목록을 집합으로 변환하는 것이 좋습니다. 세트는 요소 존재 여부를 확인하고 중복 요소를 제거하는 데 최적화되어 있기 때문입니다. 그러나 요소의 순서를 유지하는 것이 중요하다면 대신 목록 이해를 사용하는 것이 더 나을 수 있습니다.
성능 고려 사항:
목록을 집합으로 변환하는 작업은 특히 큰 목록의 경우 계산 비용이 많이 드는 작업일 수 있습니다. 성능이 중요하다면 목록 이해 또는 생성기 표현식과 같은 대체 접근 방식을 사용하는 것이 좋습니다.
가변성:
세트가 다음과 같다는 점에 유의하는 것이 중요합니다. 변하기 쉬운 , 문자열 및 튜플 (반복 가능한 데이터 유형으로도 사용될 수 있음)은 그렇지 않습니다. 이는 다른 집합에서 집합을 뺄 때 결과 집합이 다음과 같다는 것을 의미합니다. 변하기 쉬운 , 해당 내용을 수정할 수 있습니다. 반면, 다른 리스트나 튜플에서 리스트나 튜플을 뺄 경우 결과 리스트나 튜플은 변경할 수 없으며 해당 내용을 수정할 수도 없습니다.
중첩된 목록:
중첩된 목록으로 작업하는 경우 중첩 루프나 재귀를 사용하여 한 목록을 다른 목록에서 빼야 할 수도 있습니다. 예는 다음과 같습니다.
list1 = [['apple', 'banana'], ['cherry', 'orange']] list2 = [['banana', 'kiwi'], ['cherry', 'pear']] result = [] for sublist1, sublist2 in zip(list1, list2): subresult = [item for item in sublist1 if item not in sublist2] result.append(subresult) print(result)
산출:
[['apple'], ['orange']]
위의 예에서는 두 개의 중첩 목록을 정의합니다. '시트1' 그리고 '목록2' . 그런 다음 for 루프를 사용하여 각 하위 목록 쌍을 반복합니다. '시트1' 그리고 '목록2' . 우리는 리스트 컴프리헨션(list comprehension)을 사용하여 각 하위 리스트의 요소를 뺍니다. '목록2' '의 해당 하위 목록에서 잎1' . 마지막으로 결과 하위 목록을 새 목록에 추가합니다. '결과' .