加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python:如何循环不同深度的列表列表?

发布时间:2020-12-16 21:48:14 所属栏目:Python 来源:网络整理
导读:我有这样的数据结构(列表的实际列表非常长且深度不同).我事先知道他们的深度. a=( [1,2],[2,3,[4,5]] ) b=( [[1,3]] ) 想要循环遍历每个列表.怎么做到最好? 我不想最终做这样的事情: for l in a: if instance(l,list): for ll in l: if instance(ll,list):

我有这样的数据结构(列表的实际列表非常长且深度不同).我事先知道他们的深度.

 a=( [1,2],[2,3,[4,5]] )
 b=( [[1,3]] )

想要循环遍历每个列表.怎么做到最好?

我不想最终做这样的事情:

for l in a:
    if instance(l,list):
        for ll in l:
            if instance(ll,list): 
                ...
最佳答案
既然你没有定义目的,我正在编写一个对所有元素求和的函数:

def rec_sum(lst):
    if not lst:
        return 0
    el = lst.pop()
    if isinstance(el,list):
        return rec_sum(el) + rec_sum(lst)
    else:
        return el + rec_sum(lst)

即使您事先知道深度,使用递归也更容易解决.

请记住,Python限制堆叠1000个堆栈帧.因此,如果您的列表包含超过1000个项目,则应该获得异常.

如果您认为可以有超过1000个项目,那么这是一个混合解决方案,它使用递归和循环.它限制在1000个级别,而不是1000个项目:

def rec_for_sum(lst):
    if not lst:
        return 0
    count = 0
    for el in lst:
        if not isinstance(el,list):
            count += el
        else:
            count += rec_for_sum(el)
    return count

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读