如何使用列表推导式将嵌套列表的首个元素设为0?
问题:如何用列表推导式修改嵌套列表的首个元素为0?
原始嵌套列表:
num_list = [ [1234, 1244123, 453242], [123123, 78421, 76433], [46345, 578542, 47463] ]
想要转换为:
[ [0, 1244123, 453242], [0, 78421, 76433], [0, 578542, 47463] ]
你之前尝试的代码[[x * 0 for x in j[0]] for j in num_list]存在问题:j[0]是单个数字,遍历它会把数字拆成单个字符(比如1234会被拆成'1','2','3','4'),最终生成的是[[0,0,0,0], ...]这类不符合需求的结构。
这里提供两种正确的列表推导式写法:
方法一:切片拼接(简洁高效)
result = [[0] + sublist[1:] for sublist in num_list]
直接用[0]替换每个子列表的首个元素,再拼接上原列表从索引1开始的剩余部分,无需遍历子列表所有元素。
方法二:索引判断(灵活通用)
result = [[0 if idx == 0 else num for idx, num in enumerate(sublist)] for sublist in num_list]
通过enumerate获取子列表中每个元素的索引和值,当索引为0时替换成0,其余情况保留原数值。
内容的提问来源于stack exchange,提问作者Jacob Mathew Keluthara
相关产品推荐
相关产品推荐

