Python 2D列表如何切片以移除全空字符串子列表及其后所有内容
Python 2D列表移除首个全空子列表及后续内容的实现方法
你可以通过遍历匹配首个全空子列表的索引+切片的方式实现,代码非常简洁:
基础实现(确认列表中一定存在全空子列表时使用)
# 示例输入列表 my_list = [ ["9743", "user3"], ["435", "user2"], ["5426", "user8"], ["", ""], ["9743", "user9"] ] # 一行完成筛选 filtered_list = my_list[:next(idx for idx, sub_list in enumerate(my_list) if all(item == "" for item in sub_list))]
输出结果为:[["9743", "user3"], ["435", "user2"], ["5426", "user8"]]
兼容无全空子列表的场景
如果不能确定列表中一定存在全空子列表,可以给next方法加默认值避免抛出停止迭代异常:
# 未匹配到全空子列表时默认返回整个原列表 filtered_list = my_list[:next((idx for idx, sub_list in enumerate(my_list) if all(item == "" for item in sub_list)), len(my_list))]
逻辑说明
- 用
enumerate遍历列表时同步获取子列表的索引和内容 - 用
all(item == "" for item in sub_list)判断子列表是否所有元素均为空字符串 - 用
next()直接取第一个符合条件的索引,无需遍历整个列表,执行效率更高 - 用列表切片直接截取该索引之前的所有内容即可
内容的提问来源于stack exchange,提问作者Aspect11
相关产品推荐
相关产品推荐

