부울 목록의 값이 주어지면 필터링해야 하는 값 목록이 있습니다.
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]
로 충분합니다.