리스트 안에 특정값을 다 지우는 방법이 궁금합니다
조회수 14359회
발생하는 문제 및 실행환경
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 답변
-
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)
댓글 입력