부울 목록을 기반으로 목록 필터링

| | | | | | | | | |

부울 목록의 값이 주어지면 필터링해야 하는 값 목록이 있습니다.

list_a = [1, 2, 4, 6] filter = [True, False , True, False] 

다음 행을 사용하여 필터링된 새 목록을 생성합니다.

filtered_list = [i for indx,i in enumerate(list_a) if filter[indx] == True] 

결과:

filtered_list [1,4] 

라인은 작동하지만 (내게는) 약간 과도해 보입니다. 동일한 작업을 수행하는 더 간단한 방법이 있는지 궁금합니다.


조언

두 가지 요약 아래 답변에 좋은 조언이 있습니다.

1- 내장 기능이기 때문에 filter 목록에 이름을 지정하지 마세요.

2- if filter[idx]==True.. 에서 했던 것처럼 True 와 비교하지 마세요. 불필요하기 때문입니다. if filter를 사용하기만 하면 됩니다. [idx]로 충분합니다.