嵌套列表展开的三种方法及计算嵌套列表深度的方法


这里说的情况是,嵌套列表的每一个元素都有同样的格式
如: s=[[1,2],[1,2]]
如果 s=[[1,2],[[1,2]],[[[1,2],[1,2]]]],只能展开为 [1, 2, [1, 2], [[1, 2], [1, 2]]],不能再继续展开,是因为出现了整数、列表的混合元素的情况。

解法一:列表解析式

>>> s=[[1,2],[3,4]]
>>> ans=[j for i in s for j in i]
>>> ans
[1, 2, 3, 4]

解法二:np.flattten

>>> s=[[1,2],[3,4]]
>>> ans=np.array(s).flatten().tolist()
>>> ans
[1, 2, 3, 4]

解法三:sum

>>> s=[[1,2],[3,4]]
>>> ans=sum(s,[])
>>> ans
[1, 2, 3, 4]

解法四:itertools.chain

>>> from itertools import chain
>>> s=[[1,2],[3,4]]
>>> list(chain(*s))
[1, 2, 3, 4]
>>> list(chain.from_iterable(s))
[1, 2, 3, 4]

附:计算嵌套列表深度的方法

def depthCount(lst):
    return isinstance(lst, list) and 1 + max(map(depthCount, lst), default=0)
s = [[1, 2], [3, 4]]
print(depthCount(s))  # 2
s = [0, [1, 2], [3, 4], [[5, 6]]]
print(depthCount(s))  # 3

参考:
counting-depth-or-the-deepest-level-a-nested-list-goes-to
嵌套列表展开

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值