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

Assigning elements to a lists within a list

我是 运行 Python3.6,我正在处理其中包含其他列表的列表。

list_array = [[1,0,1,0,2,2],
              [1,1,2,0,1,2],
              [2,2,2,1,0,1]]

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

我为此使用的代码是

for k in list_array:
    k = [x for x in k if x!=2]

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

为什么不能用这种方式替换 list_array 中列表中的元素?

您的代码每次都会创建一个新列表,并删除之前的列表。

在最后一次迭代中你应该得到这个:

k = [1, 0, 1]

相反,列表理解工作正常:

list_array = [[x for x in sublist if x != 2] for sublist in list_array]

输出:

[[1, 0, 1, 0], [1, 1, 0, 1], [1, 0, 1]]

如果你想写一个显式的for循环,可以这样写:

new_list_array = list()
for sublist in list_array:
    new_list_array.append([x for x in sublist if x != 2])

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

for k in list_array:
    k[:] = [x for x in k if x!=2]

你不是在修改旧列表你可以那样修改它

list_array = [[1,0,1,0,2,2],[1,1,2,0,1,2],[2,2,2,1,0,1]]
for k in list_array:
   k[:]= [x for x in k if x!=2] 


print(list_array)