You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除嵌套列表首个子列表的0及其他子列表对应位置元素?

问题:移除嵌套列表中对应位置元素

给定嵌套列表:

a = [[0, 1, 0, 1, 1, 1], [23,22, 12, 45, 32, 33],[232, 332, 222, 342, 321, 232]]

需要移除首个子列表a[0]里的所有0元素,同时移除其他子列表中对应位置的元素,最终得到目标列表:

d = [[1, 1, 1, 1], [22, 45, 32, 33], [332, 342, 321, 232]]

解决方案

方法一:利用zip()和列表推导式(简洁高效)

通过打包子列表元素进行筛选,再拆分重组:

a = [[0, 1, 0, 1, 1, 1], [23,22, 12, 45, 32, 33],[232, 332, 222, 342, 321, 232]]
# 按位置打包所有子列表的元素,筛选出首个元素不为0的组
filtered_groups = [group for group in zip(*a) if group[0] != 0]
# 将筛选后的组重新拆分为嵌套列表
d = [list(column) for column in zip(*filtered_groups)]
print(d)

逻辑说明:

  • zip(*a)会把三个子列表的对应位置元素打包成元组,例如(0,23,232)、(1,22,332);
  • 列表推导式筛选出元组首个元素(来自a[0])不为0的组;
  • 再次使用zip(*filtered_groups)将筛选后的元组拆分为新的子列表,最终得到目标结构。

方法二:通过索引筛选(直观易懂)

先确定需要保留的位置索引,再提取对应元素:

a = [[0, 1, 0, 1, 1, 1], [23,22, 12, 45, 32, 33],[232, 332, 222, 342, 321, 232]]
# 获取a[0]中元素不为0的索引
valid_indices = [idx for idx, num in enumerate(a[0]) if num != 0]
# 遍历每个子列表,提取有效索引对应的元素
d = [[sub_list[idx] for idx in valid_indices] for sub_list in a]
print(d)

逻辑说明:

  • enumerate(a[0])遍历a[0]的元素并获取其索引,筛选出元素不为0的索引;
  • 嵌套列表推导式遍历每个子列表,只保留有效索引对应的元素,得到最终结果。

内容的提问来源于stack exchange,提问作者Sher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:25:18