将元素分配给列表中的列表

Isa*_*aac 2 python loops iterable list python-3.x

我正在运行Python3.6,并且正在使用其中包含其他列表的列表。

list_array = [[1,0,1,0,2,2],
              [1,1,2,0,1,2],
              [2,2,2,1,0,1]]
Run Code Online (Sandbox Code Playgroud)

我想修改名为list_array的列表,以删除子列表中所有值为2的条目。

我用于此的代码是

for k in list_array:
    k = [x for x in k if x!=2]
Run Code Online (Sandbox Code Playgroud)

但是,此代码不会修改list_array。

为什么无法以这种方式替换list_array中列表中的元素?

Jon*_*ler 5

您正在创建一个新列表,而不是分配给旧列表。您可以通过使用添加作业来解决此问题k[:] =,如下所示:

for k in list_array:
    k[:] = [x for x in k if x!=2]
Run Code Online (Sandbox Code Playgroud)