降低以下代码的复杂性

0 python

我想要做的是搜索列表并删除一个值.

所以我写了下面的代码

for x in range(10):
   if x in list1:
      list1.remove(x)
Run Code Online (Sandbox Code Playgroud)

这个函数是否为〜(n ^ 2),因为它首先查找该值,然后删除并向后推送其余的值?

还有一种方法可以通过使用try/except来按顺序n转换它

try:
  for x in range(10):
    list1.remove(x)
except ValueError:
  # make it go back to next iteration 
Run Code Online (Sandbox Code Playgroud)

Gio*_*ajo 5

使用:

L = [x for x in L if x not in removal_list]
Run Code Online (Sandbox Code Playgroud)

removal_list可以是任何容器,但是如果你使用set()或frozenset(),你将获得O(n)(n = len(L)).