我有一个这样的列表:[[1, 2, 3], [4, 5, 6]]
我想用列表推导把它改成[[1, None, 3], [4, None, 6]]
。
I have try:
print(list(x[1] = None for x in [[1, 2, 3], [4, 5, 6]]))
抛出错误SyntaxError: expression cannot contain assignment, perhaps you meant "=="
。
我也试过:
print(list(x1 for x in [[1, 2, 3], [4, 5, 6]] for x1 in x))
但这只是给[1, 2, 3, 4, 5, 6]
。
我已经思考了大约1个小时,有人知道如何将我的代码输出更改为[[1, None, 3], [4, None, 6]]
吗?
问题中显示的数据是由2个子列表组成的列表,每个子列表包含3个元素。
让我们假设它是每个子列表中的第二个值,应该用None替换,并且子列表的长度可能不同。在这种情况下:
_list = [[1,2,3],[4,5,6]]
new_list = [[x, None, *y] for x, _, *y in _list]
print(new_list)
输出:
[[1, None, 3], [4, None, 6]]
现在让我们将数据更改为:
_list = [[1, 2, 3], [4, 5, 6, 7]]
…然后,同样的列表推导式将生成:
[[1, None, 3], [4, None, 6, 7]]
注意:
如果任何子列表包含少于2个元素
在代码中应该是:
[[None if i==1 else v for i,v in enumerate(l)] for l in [[1,2,3], [4,5,6]]]
这当然会创建一个新的列表
l=[[1,2,3],[4,5,6]]
[[a, None, c] for a,b,c in l]
#[[1, None, 2], [4, None, 5]]
如果您想要就地更改原始列表:
l = [[1, 2, 3], [4, 5, 6]]
for sub in l:
sub[1] = None
print(l)
# [[1, None, 3], [4, None, 6]]
如果您想使用嵌套列表推导结构
[[k[i] if i != 1 else None for i in range(len(k))] for k in [[1,2,3],[4,5,6]]]
# [[1, None, 3], [4, None, 6]]