본문 바로가기
파이썬

파이썬 단 하나의 명령문으로 Python 목록에서 여러 항목 제거

by º기록 2020. 11. 6.
반응형

파이썬에서는 목록에서 항목을 제거하는 방법을 알고 있습니다.

item_list = ['item', 5, 'foo', 3.14, True]
item_list.remove('item')
item_list.remove(5)

위의 코드는 item_list에서 값 5와 'item'을 제거합니다. 하지만 제거 할 내용이 많으면 여러 줄을 써야합니다.

item_list.remove("something_to_remove")

제거중인 항목의 색인을 알고 있으면 다음을 사용합니다.

del item_list[x]

여기서 x는 제거하려는 항목의 인덱스입니다.

제거하려는 모든 숫자의 색인을 알고 있다면 색인에서 항목을 삭제 하는 일종의 루프를 사용합니다.

하지만 제거하려는 항목의 색인을 모르는 경우 어떻게해야합니까?

item_list.remove ( 'item', 'foo') 를 시도했지만 remove 가 하나의 인수 만 취한다는 오류가 발생했습니다.

단일 명령문의 목록에서 여러 항목을 제거하는 방법이 있습니까?

추신 del remove 를 사용했습니다. 누군가이 둘의 차이점을 설명 할 수 있습니까, 아니면 동일합니까?

감사

 

해결 방법

 

Python에서는 새 개체를 만드는 것이 기존 개체를 수정하는 것보다 낫습니다.

item_list = ['item', 5, 'foo', 3.14, True]
item_list = [e for e in item_list if e not in ('item', 5)]

다음과 같습니다.

item_list = ['item', 5, 'foo', 3.14, True]
new_list = []
for e in item_list:
    if e not in ('item', 5):
        new_list.append(e)
item_list = new_list

필터링 된 값의 큰 목록 (여기서는 ( 'item', 5) 는 작은 요소 집합)의 경우 set 를 사용하면 성능이 향상 될 수 있습니다. , in 작업이 O (1)에 있으므로 :

item_list = [e for e in item_list if e not in {'item', 5}]


unwanted = {'item', 5}
item_list = [e for e in item_list if e not in unwanted]


 

참조 페이지 https://stackoverflow.com/questions/36268749

 

 

반응형

댓글