考虑:

fooList = [1, 2, 3, 4] # Ints for example only, in real application using objects

for foo in fooList:
    if fooChecker(foo):
        remove_this_foo_from_list


如何从列表中删除特定的foo?请注意,我仅以整数为例,在实际应用程序中有一个任意对象列表。

谢谢。

最佳答案

通常,您只是不想这样做。而是构造一个新列表。大多数情况下,这是通过list comprehension完成的:

fooListFiltered = [foo for foo in fooList if not fooChecker(foo)]


另外,生成器表达式(上面链接的我的视频涵盖了生成器表达式以及列表推导)或filter()(请注意,在2.x中,filter()不是惰性的-使用生成器表达式或itertools.ifilter()代替)更合适的方法(例如,太大的文件太大而无法读入内存,这种方式将无法正常工作,但可以使用生成器表达式)。

如果您需要实际修改列表(很少,但有时是这样),则可以将其分配回来:

fooList[:] = fooListFiltered

10-01 10:49