반응형
질문
파이썬에서 튜플 목록을 반복하면서 특정 조건을 충족하는 경우 해당 튜플을 제거하려고합니다.
for tup in somelist:
if determine(tup):
code_to_remove_tup
code_to_remove_tup
대신에 무엇을 사용해야합니까? 이러한 방식으로 항목을 제거하는 방법을 찾을 수 없습니다.
답변
리스트 컴프리헨션을 사용하여 제거하지 않을 요소만 포함하는 새로운 리스트를 만들 수 있습니다:
somelist = [x for x in somelist if not determine(x)]
또는 somelist[:]
슬라이스에 할당하여 원래 리스트를 변경하여 원하는 항목만 포함시킬 수 있습니다:
somelist[:] = [x for x in somelist if not determine(x)]
이 접근 방식은 변경 사항을 반영해야하는 다른 somelist
참조가 있는 경우 유용할 수 있습니다.
컴프리헨션 대신 itertools
를 사용할 수도 있습니다. Python 2에서는:
from itertools import ifilterfalse
somelist[:] = ifilterfalse(determine, somelist)
또는 Python 3에서:
from itertools import filterfalse
somelist[:] = filterfalse(determine, somelist)
반응형
댓글