isinstance()是一个内置的函数(BIF)。
它允许某个特定标识符是否包含某个特定类型的数据
如判断某个对象是不是列表、字典、整型等
>>> a = [1,2,3]
>>> b = 123
>>> c = {1:2,2:3}
>>> isinstance(a,list)
True
>>> isinstance(a,dict)
False
>>> isinstance(b,int)
True
>>> isinstance(c,dict)
True
>>>
实例:打印一个包含嵌套列表的列表的所有数据
1 a = [1,2,'c','b',['d',[5,6,[7,8]]],[3,4]] 2 for i in a: 3 while isinstance(i,list): 4 for j in i: 5 if isinstance(j,list) is False: 6 print(j) 7 else: 8 i = j 9 break #跳出最里层的for循环,执行while循环,否则,for循环走完,就会走最下面break,跳出整个while了 10 else: 11 break #跳出while循环,不然i由于一直是列表,那么就不停执行最里面的for循环,打印3,4 12 else: 13 print(i)
结果:
1
2
c
b
d
5
6
7
8
3
4
补充:上面的功能也可以用递归函数解决,更加简洁
1 def list_cont(list_name): 2 for i in list_name: 3 if isinstance(i,list): 4 list_cont(i) 5 else: 6 print(i)
继续扩展(列表中的第一层打印时不缩进,第二层缩进一个Tab,依次类推)
1 def list_cont(list_name,level = 0):#默认第一次缩进0个Tab 2 # level = 0 3 for i in list_name: 4 if isinstance(i,list): 5 list_cont(i,level+1) 6 else: 7 print('%s%s'%(' '*level,i)) 8 a = [1,2,'c','b',['d',[5,6,[7,8]]],[3,4]] 9 list_cont(a)
结果
1 1 2 2 3 c 4 b 5 d 6 5 7 6 8 7 9 8 10 3 11 4