遍历 list 嵌套

摘要:
嵌套列表遍历1.双重嵌套列表遍历#coding=utf-8listA=['today','is','thursday']listB=['today','is','fine','day','!',listB]foriinlist1:ifisinstance:#检查列表元素是否为listforjini:#遍历嵌套的listprintj,else:printi。执行结果:今天下午嗯哼?因为列表可以存储多种数据类型的数据,例如tuple、dict、list、int、string、complex等,所以有时在遍历列表时,我们无法使用上述遍历方法获得所需的结果。此时,我们必须对不同的数据类型执行不同的处理。

嵌套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

免责声明:文章转载自《遍历 list 嵌套》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇webstorm里直接调用命令行Windows Server 2008 R2 免费使用900天的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

MySQL锁详解

MySQL锁详解update语句执行流程MySQL的锁介绍按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制:全局锁:锁的是整个database。由MySQL的SQLlayer层实现的表级锁:锁的是某个table。由MySQL的SQLlayer层实现的行级锁:锁的是某行数据,也可能锁定行之间的间隙。...

微信支付服务商模式支付与普通微信支付的配置区别

chapter=7_7&index=5注:与普通微信支付相比,源代码是上述7/8之间的区别,其他可以看作是服务提供商自己的微信支付配置;...

Fiddler抓包7-post请求(json)(转载)

2.查看上图中的红色框:这里只支持application/x-www-form-urlencoded格式的body参数,即json格式。您需要检查JOSN列中的five和xml。1.如果遇到text/xml格式的正文,如下图所示...

node 访问第三方API

如果没有提供头,将检测文件后缀,并在PUT请求中设置相应的内容类型。...

解决ubuntu下字体模糊的问题

最近,在ubuntu下使用firefox时,字体总是有点模糊。我搜索了大部分字体,以找到解决问题的方法。据说,这个问题的原因是网站本身设置了字体,这些字体通常在Windows下设置,因此在Linux下字体看起来是虚拟的。对应的中文应该是:编辑=˃选项=˃内容=˃字体和颜色=˃允许网页选择自己的字体。...

uni-app为组件uni-icons增加自定义图标(超简单)

1、找到需要的图标,这里我是在阿里巴巴图标库(https://www.iconfont.cn/)中找到对应的图标下载为svg格式备用:2、通过在线ttf编辑器打开uni.ttf文件(http://fontstore.baidu.com/static/editor/index.html#),打开之后可以看到所有的uni所有图标都在里面3、导入第一步下载好的图标...