如何使用列表推导式直接提取元素列表的所有子项,无需创建中间嵌套列表
实现方案
可以直接用单层多循环的列表推导完成需求,不会产生中间的嵌套列表结构,代码如下:
all_sub_item_li: list[sub_item] = [sub_item for item in self.item_li for sub_item in item.sub_item_li] return all_sub_item_li
原理说明
Python 列表推导的多层循环写法和常规嵌套 for 循环的顺序完全对应,上述列表推导等价于常规写法:
all_sub_item_li: list[sub_item] = [] for item in self.item_li: for sub_item in item.sub_item_li: all_sub_item_li.append(sub_item)
这种写法直接遍历每个item的sub_item_li成员,将所有sub_item元素直接收集到结果列表中,完全跳过了生成list[list[sub_item]]类型中间变量的步骤,相比你原来的实现减少了无意义的内存占用和遍历开销,代码也更简洁。
内容的提问来源于stack exchange,提问作者gunnar247
相关产品推荐
相关产品推荐

