从美学角度和性能角度来看,基于条件将项目列表拆分为多个列表的最佳方法是什么?相当于:
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),实际上在可读性上没有差异。