条件に基づいてアイテムのリストを複数のリストに分割するために、美的にもパフォーマンスの観点からも最良の方法は何ですか?同等のもの:
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)。読みやすさの違いはほとんどありません。