Python tips:数据类型及类型判断 type(), isinstance(), isalpha()等 | 您所在的位置:网站首页 › c语言如何判断变量类型 › Python tips:数据类型及类型判断 type(), isinstance(), isalpha()等 |
目录 1. 数据类型 1.1 数值类型 1.2 字符串 1.3 列表 1.4 元组 1.5 字典 字典的初始化 1.6 集合 集合的初始化 1.2 数据类型转换 2. 变量类型判断:type() 3. 变量类型判断:isinstance() 4. 字符串类型的相关方法is***() family 【参考】 1. 数据类型变量被用于存储某种类型的数据。针对不同的变量数据类型,解释器会相应地分配内存。 Python定义了一些核心数据类型,如下所示: Numerics(数值)String(字符串)List(列表)Tuple(元组)Dictionary(字典)File(文件)Set(集合)其它类型:类型,None,布尔型编程单元类型:函数、模块、类与实现相关的类型:编译的代码堆栈跟踪 1.1 数值类型Python支持四种不同的数值类型: int(有符号整型)long(长整型,也可以代表八进制和十六进制)float(浮点型)complex(复数)一些数值类型的实例如下表所示: intRemarkfloatcomplex100.03.14j10015.2045.j-786-21.99.322e-36j0o7620o前缀表示8进制数32.3e+18.876j-0o470-90.-.6545+0J-0x2600x前缀表示16进制数-32.54e1003e+26J0x6970.2E-124.53e-7j Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。注意:在 Python2.X 版本中还有long 类型,用a=123L之类的赋值语句初始化一个long型的整型变量。在 python3中int类型被扩展为可以支持非常大的位宽,long类型被废除,所以在python3中用a = 123L之类的赋值语句会报错 1.2 字符串 1.3 列表 1.4 元组 1.5 字典 字典的初始化 # 初始化一个空的字典 d = {} # d = dict() # 给字典追加条目或者更新其中的条目 d['name'] = 'alice' d['sex'] = 'female' d['age'] = 13 d['nationality'] = 'USA' # 直接用key-value pairs进行字典初始化,与上面的写法等价,但是这个显然更加简洁 # d = dict(name='alice', sex='female', age=13, nationality='USA') print(d) print(d.keys()) print(d.values()) # 读取其中某个key所对应的值。要注意的是在上面初始化时name等是不加引号的, 会被自动识别为字符串 print(d['name'])也许正因为此,以下这种基于key-value pair的初始化是不行的。虽然以数值为key本身是可以的 。 # d2 = dict(1 = 'bob') # NG d[1] = 'bob' # OK d[1.1] = 'tom' # OK print(d[1.1]) 1.6 集合 集合的初始化 # 集合的初始化 s1 = {1,2,3} s2 = set([1,2,3]) print(s1,s2)需要注意的是,空的花括号初始化d = {}得到的是一个字典,而带有元素在内的花括号初始化比如{1} 得到一个集合。这么容易混淆的做法几乎可以看作是python的一个“bug”了。所以,建议使用显式的set()和dict()来声明和初始化。 1.2 数据类型转换有时候,我们需要对数据内置的类型进行转换。直接用数据类型名作为函数进行调用即可实现数据类型的转换,如下表所示。这些函数返回一个新的对象,表示转换后的值。 函数描述int(x [,base]) 将x转换为一个整数 float(x) 将x转换到一个浮点数 complex(real [,imag]) 创建一个复数 str(x) 将对象 x 转换为字符串 repr(x) 将对象 x 转换为表达式字符串 eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象 tuple(s) 将序列 s 转换为一个元组 list(s) 将序列 s 转换为一个列表 set(s) 转换为可变集合 dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。 frozenset(s) 转换为不可变集合 chr(x) 将一个整数转换为一个Unicode字符字符 ord(x) 将一个字符转换为它的整数值 hex(x) 将一个整数转换为一个十六进制字符串 oct(x) 将一个整数转换为一个八进制字符串 2. 变量类型判断:type()type()用于返回某个变量的类型名。 k1 = 1 k2 = 123456781234567812345678 x1 = 1.2 print(type(k1),type(k2),type(x1)) # print(type(k1),type(k2),type(x1),type(x2)) c = 'a' a = [] b = () d = {} s = {1} print('type(1) = ', type(1)) print('type(a) = ', type(a)) print('type(b) = ', type(b)) print('type(c) = ', type(c)) print('type(d) = ', type(d)) print('type(s) = ', type(s))type(1) = type(a) = type(b) = type(c) = type(d) = type(s) = 3. 变量类型判断:isinstance() isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系。 isinstance() 会认为子类是一种父类类型,考虑继承关系。即认为子类属于父类。 如果要判断变量是否属于某一类型或者某一类型的子类型应该isinstance()。如果要求精确地类型匹配判断则应该用type()。 接接上面例子,用isinstance判断各变量的类型(结果全部为True)。 print(isinstance(k1, int)) print(isinstance(x1, float)) print(isinstance(a, list)) print(isinstance(b, tuple)) print(isinstance(c, str)) print(isinstance(d, dict)) print(isinstance(s, set))注意,python中没有char类型,只有str类型! 4. 字符串类型的相关方法is***() familyPython还为字符串类型定义了一堆与数据类型判断相类似的方法用于判断字符串的特征性质。用dir(str)可以列出以下is***() family的方法。 isalnum isalpha isascii isdecimal isdigit isidentifier islower isnumeric isprintable isspace istitle isupper这里不一一列举说明,仅举一些例子看看。 print('abc'.isalpha()) print('1'.isalnum()) print('ab1'.isalpha()) print('ab1'.isalnum()) print(' '.isspace()) print('123'.isalnum()) print('123'.isnumeric()) print('1.3'.isnumeric()) print('123'.isdecimal()) print('a'.islower()) print('A'.isupper())这段代码运行会报出两个False,其余是True。你能看出哪两个False吗? 【参考】Mark Lutz著,李军,刘红伟等译:Python学习手册,第4版 |
CopyRight 2018-2019 实验室设备网 版权所有 |