Python-读取嵌套列表中的字符串

问题:读取movies = ['a','b',['c','d',['f','g','h']]]里的每个字符串

方法:利用isinstance、for和if...else读取列表里的字符串。

具体步骤:

z =0
k = 0
q = 0
movies = ['a','b',['c','d',['f','g','h']]]
for each_item in movies:
    if isinstance(each_item,list)==False:
        print(each_item)
        z = z +1
    else:
        for p in each_item:
            if isinstance(p,list)==False:
                print(movies[z][k])
                k = k+1
            else:
                for s in p:
                    print(movies[z][k][q])
                    q=q+1

结果:
可是解决问题

存在问题:
如果嵌套级别太多,就要重复使用for和if...else,不断增加变量。

进一步优化:

movies = ['a','b',['c','d',['f','g','h']]]
for each_item in movies:
    if isinstance(each_item,list):
        for nested_item in each_item:
            if (nested_item, list) == False:
                print(nested_item)
            else:
                for f in nested_item:
                    print(f)
    else:
        print(each_item)

或者

movies = ['a','b',['c','d',['f','g','h']]]
for each_item in movies:
    if isinstance(each_item,list):
        for nested_item in each_item:
            if isinstance(nested_item, list) :
                for deeper_item in nested_item:
                    print(deeper_item)
            else:
                 print(nested_item)
    else:
        print(each_item)

总结:代码更少,清晰,但还存在一个问题:如果有更多的嵌套,该如何解决。
比如说movies = ['a','b',['c','d',['f','g','h',['o']]]]

使用函数,继续优化形成最终大法:

movies = ['a','b',['c','d',['f','g','h',['o']]]]
def item (name):
    for each_item in name:
        if isinstance(each_item,list):
            item(each_item)
        else:
            print(each_item)
print(item(movies))

这样,再也不怕嵌套的级别了。

问题解决方法参考了《Head First Python(中文版)》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 10,263评论 0 11
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,840评论 0 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,094评论 18 399
  • 昨天下午答辩,觉得自己的口头表达能力下降了,演讲的时候心理胆怯、紧张,在高中的时候做得也比现在好。 不能再这样了。...
    男青年阅读 3,899评论 0 3
  • 下雨了。 夏至到来,炎热的天气常伴随着夏日的雨,热烈而磅礴,不似春雨的婉约,也不似夏雨的绵长。眉间,发梢卷起的...
    猪小三阅读 4,130评论 0 1