【发布时间】:2013-06-13 16:18:41
【问题描述】:
考虑:
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?请注意,我仅使用整数作为示例,在实际应用程序中存在任意对象的列表。
谢谢。
【问题讨论】:
-
值得注意的是another answer 的内容,这表明构建新列表比就地修改列表更有效。如果您需要就地执行,
my_list.remove(my_item)特别糟糕,因为它是 O(n) 查找 - 请改用del my_list[index]。 -
@Aya 但是你必须按索引迭代(或使用
enumerate()- 仍然很难看) - 因此我建议只构建一个新列表,然后在需要修改现有列表时重新分配。当然,一般来说,人们可以只建立一个新列表而忘记旧列表。 -
@Lattyware 确实如此。另请参阅我对您的回答的评论。