python学习-isinstance()

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'%('\t'*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

 

posted @ 2017-05-20 19:50  露似真珠月似弓  阅读(1501)  评论(0编辑  收藏  举报