推导式/自省
Posted zhangjx2457
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推导式/自省相关的知识,希望对你有一定的参考价值。
一、列表推导式
如何生成一个[data0、data1、data2.....data99]的列表??
循环方法:
list1=[] for i in range(100): list1.append(‘data{}‘.format(i)) print("list1的值为:",list1)
用列表推导式:
list2 = ["data{}".format(i) for i in range(100)] print(my_list1)
eg:1-100能被3整除但是不能被2整除的数
list3 = [i for i in range(100) if not(i % 3) and (i % 2)] print(list3) #结果 [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
二、字典推导式
有一个列表li,把他转成一个元素为下标为键,值为元素值的字典格式的数据
li = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘]
#循环方法: dict1={} for i,j in enumerate(li): dict1[i]=j print(dict1)
#推导式方式: print({i:j for i,j in enumerate(li)}) 结果: {0: ‘a‘, 1: ‘b‘, 2: ‘c‘, 3: ‘d‘, 4: ‘e‘, 5: ‘f‘, 6: ‘g‘}
将下面字符串格式的数据,改成字典类型的数据
str="name=zjx;age=18;sex=girl;tel=18822113232"
#推导式: dict1={item.split("=")[0]:item.split("=")[1] for item in str.split(";")} print(dict1)
三、自省
自省就是程序运行时能够知道对象的类型, Python中比较常见的自省(introspection)机制(函数用法)有: dir(),type(), hasattr(), isinstance(),通过这些函数,我们能够在程序运行时得知对象的类型,判断对象是否存在某个属性,访问对象的属性。
dir()
dir() 函数可能是 Python 自省机制中最著名的部分了。它返回传递给它的任何对象的属性名称经过排序的列表。如果不指定对象,则 dir() 返回当前作用域中的名称。让我们将 dir() 函数应用于 keyword 模块,并观察它揭示了什么:
>>> import keyword >>> dir(keyword) [‘__all__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘iskeyword‘, ‘kwlist‘, ‘main‘]
type()
type() 函数有助于我们确定对象是字符串还是整数,或是其它类型的对象。它通过返回类型对象来做到这一点,可以将这个类型对象与 types 模块中定义的类型相比较:
>>> type(42)<class ‘int‘> >>> type([])<class ‘list‘>
isinstance()
可以使用 isinstance() 函数测试对象,以确定它是否是某个特定类型或定制类的实例:
>>> isinstance("python", str) True
以上是关于推导式/自省的主要内容,如果未能解决你的问题,请参考以下文章