将元素分配给列表中的列表
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)
我是 运行 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)