Python如何从嵌套大列表的每个子列表中提取第n个元素组成新列表
嵌套列表批量提取指定位置元素实现方案
针对等长嵌套列表提取对应位置元素的需求,有两种非常简便的实现方式,不需要手动逐个写索引取值:
方法1:列表推导式(最推荐,可读性高)
直接遍历大列表中的每一个子列表,取子列表对应索引位的元素即可,无论大列表内有多少个子列表都可以自动完成提取:
# 定义原始嵌套列表 list_a = [['a','b','c'], ['d','e','f']] # n为要提取的位置索引,注意Python索引从0开始,第一个元素对应n=0 n = 0 result = [sub_list[n] for sub_list in list_a] print(result) # 输出结果:['a', 'd']
注意:使用该方法需要保证所有子列表的长度都大于n,否则会触发索引越界报错。
方法2:zip解包快速分组
如果需要一次性提取多个位置的元素,可以用*解包嵌套列表传入zip,zip会自动将所有子列表相同位置的元素打包为元组,直接按索引取对应分组即可:
list_a = [['a','b','c'], ['d','e','f']] # zip(*list_a)的结果为[('a','d'), ('b','e'), ('c','f')] pos_0 = list(zip(*list_a))[0] print(pos_0) # 输出结果:('a', 'd'),需要纯列表格式可以在外层套list()转换
你之前使用的list_a[0][0]、list_a[1][0]属于手动遍历索引取值的写法,当大列表内子列表数量很多时效率极低,上述两种方法会自动完成遍历逻辑,适配任意数量的子列表场景。
内容的提问来源于stack exchange,提问作者01ja
相关产品推荐
相关产品推荐

