• 遍历 list 嵌套


    嵌套list的遍历
    1、双重嵌套list的遍历

    #coding=utf-8 
    listA = ['today','is','thursday']
    listB = ['today','is','fine','day','!']
    list1 = [listA,'恩哼?',listB]
    for i in list1:
      if isinstance(i, list): #查看list元素是否是list
        for j in i:  #遍历嵌套的list
          print j,
      else :
        print i,
    

    执行结果:

    today is thursday 恩哼? today is fine day !

    由于list中可以存放多种数据类型的数据,如tuple、dict、list、int、string、复数等类型,所以有时遍历list时,再使用上面的遍历方法就得不到我们想要的结果,这个时候就必须针对不同的数据类型进行不同的处理。

    2、一个list中多层嵌套list或者tuple(元组)或字典(dict)等的遍历

    #coding=utf-8
    def printList(list1):
      for elements in list1:
        if isinstance(elements,list) or isinstance(elements, tuple): 
          printList(elements) #递归调用函数本身进行深层次的遍历
        elif isinstance(elements, dict):
          for i in elements.items():
            print i,
        else :
          print elements,
    list1 = [{"name":"jack",1:2},[[3.4j,["this","is","the","list"],(1,2,"adf")],3,4],'a','b',('a',"cc",'d'),1,{"name":"jack",1:2}]
    printList(list1)
    

    该题的基本思路就是先判断list中每一个元素具体是什么类型,如果是list或者是tuple,就采用递归算法往深进行一层一层的遍历,直到list中的元素为常规类型时,就打印输出,由于dict类型中的键值key必须唯一,所以只能是不可变类型数据,所以这里不存在深层遍历dict键值的问题。

    执行结果:

    (1, 2) (‘name’, ‘jack’) 3.4j this is the list 1 2 adf 3 4 a b a cc d 1 (1, 2) (‘name’, ‘jack’)

    3、list中,奇数位加1,偶数为加2

    #coding=utf-8 
    listA = [1,'a',2,'b',3,'c',4,'d',5,'e']
    for i in range(len(listA)):
      if (i + 1) % 2 == 0:
        if isinstance(listA[i], str):#判断字符的类型,因为不同类型无法直接加操作
          listA[i] += str(2)
        else :
          listA[i] += 2
      else :
        if isinstance(listA[i],str):
          listA[i] += str(1)
        else :
          listA[i] += 1
    print listA
    

    执行结果:

    [2, 'a2', 3, 'b2', 4, 'c2', 5, 'd2', 6, 'e2']

    遍历嵌套dict tuple list :

    def printList(listx):
        for i in listx:
            if isinstance(i,list) or isinstance(i,tuple):
                printList(i)
            elif isinstance(i,dict):
                printList(i.values())
            else:
                print(i)

    转自:https://blog.csdn.net/seetheworld518/article/details/46756355

  • 相关阅读:
    Loki 初体验
    柠檬研究院及第一期活动预告
    Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控
    聊聊AspectCore动态代理中的拦截器
    使用AspectCore动态代理
    AspectCore中的IoC容器和依赖注入
    AspectCore.Extension.Reflection : .NET Core反射扩展库
    Asp.Net Core轻量级Aop解决方案:AspectCore
    [精品书单] C#/.NET 学习之路——从入门到放弃
    创建vue项目
  • 原文地址:https://www.cnblogs.com/tylf-lk/p/10133490.html
Copyright © 2020-2023  润新知