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

조회수 14272회

발생하는 문제 및 실행환경

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)
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)