리스트 안에 특정값을 다 지우는 방법이 궁금합니다

발생하는 문제 및 실행환경

remove()는 첫번째로 보이는 아이템만 지우는 걸로 알고 있는데 그럼 리스트 전체에서 아이템을 다 지우려면 어떻게 해야될까요?

제가 쓰는 방법은 별로 파이썬스런 방법도 아니고, in-remove하면서 중복되는 검색이 있어서 느린 것같습니다. 더 좋은 방법이 있으면 알려주세요!

소스코드

x = [1, 2, 3, 4, 2, 2, 3]
def remove_values_from_list(the_list, val):
    while val in the_list:
        the_list.remove(val)
remove_values_from_list(x, 2)

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    1. 함수를 써서 만들면

    2.x :

    x = [1,2,3,2,2,2,3,4]
    filter(lambda a: a != 2, x)
    

    3.x :

    x = [1,2,3,2,2,2,3,4]
    list(filter((2).__ne__, x))
    

    2. 리스트 내장을 써서 만들면

    def remove_values_from_list(the_list, val):
       return [value for value in the_list if value != val]
    
    x = [1, 2, 3, 4, 2, 2, 3]
    x = remove_values_from_list(x, 2)
    

    3. 예외처리를 써서 만들면

    def removeAllOccur(l, i):
        try:
            while True : l.remove(i)
        except ValueError:
            pass
    
    x = [1, 2, 3, 4, 2, 2, 3]
    removeAllOccur(x,10)
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.