遍历 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
如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的其他事物相联系。通过联系,你可将想法内化于心,从各种角度看问题,直至找到适合自己的方法。这才是思考的真谛!
──马文·明斯基