如何移除列表追加后的嵌套括号,将二维列表转为一维列表?
解决二维列表展平(移除嵌套括号)的问题
首先,先明确执行append操作后你的My_list结构:
a = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] b = [2, 5, 8, 11, 6, 4, 8, 1, 2, 7, 1] My_list = [a, b] My_list.append(a) My_list.append(b) # 此时 My_list = [a, b, a, b],是包含4个子列表的二维列表
如果你的目标是把所有嵌套子列表展平成一维列表(移除所有嵌套括号),这里有几种常用方法:
方法1:列表推导式(最直观)
这是Python处理这类问题最常用的方式,语法简洁易懂:
flattened_list = [item for sublist in My_list for item in sublist]
执行后flattened_list会是a + b + a + b,即包含44个元素的一维列表。
如果你的需求只是得到a元素接着b元素(也就是你给出的目标列表),只需取My_list的前两个子列表展平:
flattened_list = [item for sublist in My_list[:2] for item in sublist]
方法2:使用itertools.chain(效率更高)
如果处理的是超大列表,itertools.chain的内存效率更高,因为它不会创建中间列表:
import itertools flattened_list = list(itertools.chain.from_iterable(My_list))
同样,要只展平前两个子列表的话:
flattened_list = list(itertools.chain.from_iterable(My_list[:2]))
方法3:手动循环扩展(最基础)
如果你想清晰看到每一步操作,可以用循环逐个扩展列表:
flattened_list = [] for sublist in My_list: flattened_list.extend(sublist)
限制循环范围到前两个子列表,就能得到你想要的目标结果。
另外,如果你的需求只是单纯合并a和b,还可以直接用列表加法:
flattened_list = a + b
这是最直接的方式,不过仅适用于明确知道要合并哪两个列表的场景。
内容的提问来源于stack exchange,提问作者eric lardon
相关产品推荐
相关产品推荐

