Який найкращий спосіб, як естетично, так і з точки зору продуктивності, розділити список елементів на кілька списків на основі умовного? Еквівалент:
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 (1) замість n (o / 2), практично не має різниці в читанні.