python - 如何根据条件拆分列表?

标签 python list

从美学和性能的角度来看,根据条件将项目列表拆分为多个列表的最佳方法是什么?相当于:

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]

最佳答案

good, bad = [], []
for x in mylist:
    (bad, good)[x in goodvals].append(x)

关于python - 如何根据条件拆分列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/949098/

相关文章:

将文件写入 EFS docker 卷时 Python 进程没有响应

java - 当我在 Java 中只有一个对象的引用时,如何将一个对象分配给另一个对象?

java - 如何从 bean 类型数组列表中获取元素的索引

list - 在 Haskell 中将任何类型的列表作为函数参数(使用 Replit)

python - 将列表列表转换为字符串列表

Python - Gtk.TreeView 和 Gtk.ListStore 获取选定的索引

python - 迁移 django 数据库时 azure 用户名无效

python - 'virtualenv' 不会在 Windows 上激活

python - pygame事件处理

python - 如何使用 PIL 在半透明背景上创建重叠的半透明形状