리스트에서 특정 문자 있는 경우 제거하기

반응형
    반응형

    리스트에서 특정 문자 있는 경우 제거하는 방법입니다.

    조건 걸어서 하나씩 지우면 되긴 하는데 이게 될 때가 있고 안 될 때가 있더군요. 그래서 다른 방법을 추천하는 글입니다.

     

    보통 for문으로 제거하려고 할텐데 if 문 써서 리스트 원소의 문자열에 해당 문자가 있으면 remove를 통해 지우려고 할 겁니다. 저도 그렇게 했고요. 그래서 아래와 같이 for문으로 합니다. 그럼 그냥 안된다고 봐야 합니다.

    search = 'temp'
    for word in file_list:
        if search in word: 
            print('원소 제거: ' + word)
            file_list.remove(word)
    
    print(file_list)


    전혀 지워지지 않습니다. 그 이유는 인덱스 문제로 remove의 방식 때문인데 인덱스가 초기화되서 선택이 안되는 word가 생겨버립니다. 사실상 아무것도 되지 않는 코드입니다.

     

    remove를 쓰기보다는 새로 리스트를 만드는 방법이 훨씬 좋습니다.

    리스트 컴프리핸션이 가장 깔끔하고 좋은 방법입니다.

    # 이 문자 있으면 리스트에서 제거
    char_to_remove = 'temp'
    
    # 리스트 내에서 제거할 문자를 가진 원소를 필터링하여 제거
    file_list = [item for item in file_list if char_to_remove not in item]
    
    print(file_list)  

     

     

    함께 보면 좋은 글

    [Python] Comprehension

     

    댓글

    Designed by JB FACTORY

    ....