미적 측면과 성능 측면에서 조건부에 따라 항목 목록을 여러 목록으로 분할하는 가장 좋은 방법은 무엇입니까? 다음과 같습니다.
good = [x for x in mylist if x in goodvals]
bad = [x for x in mylist if x not in goodvals]
더 우아한 방법이 있습니까?
업데이트 : 여기에 내가하려는 일을 더 잘 설명하기위한 실제 사용 사례가 있습니다.
# files looks like: [ ('file1.jpg', 33L, '.jpg'), ('file2.avi', 999L, '.avi'), ... ]
IMAGE_TYPES = ('.jpg','.jpeg','.gif','.bmp','.png')
images = [f for f in files if f[2].lower() in IMAGE_TYPES]
anims = [f for f in files if f[2].lower() not in IMAGE_TYPES]
str.split()
하기 위해, 분할 연속 하위 목록의 정렬 된 콜렉션으로 목록을. 예를 들어 split([1,2,3,4,5,3,6], 3) -> ([1,2],[4,5],[6])
, 목록의 요소를 범주별로 나누는 것과 반대 입니다.
IMAGE_TYPES = set('.jpg','.jpeg','.gif','.bmp','.png')
. 가독성의 차이가없는 n (o / 2) 대신 n (1).