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


발생하는 문제 및 실행환경

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)
  • 2016년 02월 15일에 작성됨

조회수 174


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)
  • 2016년 02월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close