考虑:
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?请注意,我仅使用 int 作为示例,在实际应用程序中有一个任意对象的列表。
谢谢。
请您参考如下方法:
通常,您只是不想这样做。相反,构建一个新列表。大多数时候,这是通过 list comprehension 完成的。 :
fooListFiltered = [foo for foo in fooList if not fooChecker(foo)]
或者,一个生成器表达式(我上面链接的视频涵盖了生成器表达式和列表理解)或 filter() (请注意,在 2.x 中,filter() 不是惰性的 - 使用生成器表达式或 itertools.ifilter() 代替)可能是更合适(例如,一个太大而无法读入内存的大文件不会以这种方式工作,但可以使用生成器表达式)。
如果您需要实际修改列表(很少见,但有时会出现这种情况),那么您可以分配回来:
fooList[:] = fooListFiltered
