[파이썬] 리스트에서 특정 문자열 제거하기

반응형
    반응형

    리스트에서 특정 문자열 제거하기

    리스트에서 특정 문자열 제거하는 방법입니다.
    리스트는 remove를 사용해서 원소를 제거합니다. 굉장히 쉽죠.

    그런데 특정 조건에 맞는 원소만 제거하려면 해당 원소를 찾아주어야 합니다.
    이 부분이 살짝 어려울 수 있는데 생각을 '해당 원소를 찾는다'와 '해당 원소만 제외하고 다시 만든다' 두가지로 생각하면 접근하기 쉬워집니다.

    해당 원소만 제외하고 다시 만든다

    해당 원소를 제외하는 방법입니다. 원래 있던 리스트에서 특정 원소를 제외하고 새로운 리스트를 만들어 줍니다.

    리스트 컴프리헨션 활용

    리스트 컴프리헨션을 활용해 apple 아닌 원소만 가져옵니다.

    my_list = ['apple', 'banana', 'orange', 'apple', 'grape']
    filtered_list = [item for item in my_list if item != 'apple']
    print(filtered_list)

    filter 사용

    람다함수를 이용해 filter로 제거할 원소를 제외합니다.

    my_list = ['apple', 'banana', 'orange', 'apple', 'grape']
    filtered_list = list(filter(lambda x: x != 'apple', my_list))
    print(filtered_list)

    문자열이 섞여 있는 경우

    문자열이 섞여 있어도 가능합니다. 리스트 컴프리헨션으로 not in 조건을 넣어주면 끝입니다.

    my_list = ['applea', 'banana', 'orange', 'apple', 'grape']
    search_string = "apple"
    filtered_list = [item for item in my_list if search_string not in item]
    print(filtered_list)

    해당 원소를 찾는다

    정직하게 해당원소를 찾아서 지워줍니다. remove()를 사용합니다.

    my_list = ['apple', 'banana', 'orange', 'apple', 'grape']
    while 'apple' in my_list:
        my_list.remove('apple')
    print(my_list)

    원소에 해당 문자열이 섞여 있을때

    문자열이 섞여 있을 때 remove를 이용하는 방법은 약간 까다롭습니다. 간단한 for문으로 할 수 있지만 기존 리스트에서 원소를 사라지게 하는것이므로 복사본에서 찾아주어야 합니다.

    my_list = ["apple", "banana", "cherry", "date", "elderberry"]
    
    # 특정 문자열이 포함된 요소 제거하기
    
    search_string = "an"
    
    # 반복문을 사용하여 문자열을 포함한 모든 요소 제거
    
    for item in my_list[:]:  # 리스트의 복사본을 사용하여 반복
        if search_string in item:
            my_list.remove(item)
    
    print(my_list)

     

    함께보면 좋은글

    [파이썬] 리스트 같은 원소값 가져오기

    [Pandas] 데이터프레임 문자열 조건 검색법 총정리

    [업무 자동화 파이썬] pyautogui로 마우스 제어하기

    댓글

    Designed by JB FACTORY

    ....