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(复数)

        一些数值类型的实例如下表所示:

intRemarkfloatcomplex
100.03.14j
10015.2045.j
-786-21.99.322e-36j
0o7620o前缀表示8进制数32.3e+18.876j
-0o470-90.-.6545+0J
-0x2600x前缀表示16进制数-32.54e1003e+26J
0x6970.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))

<class 'int'> <class 'int'> <class 'float'>
type(1) =  <class 'int'>
type(a) =  <class 'list'>
type(b) =  <class 'tuple'>
type(c) =  <class 'str'>
type(d) =  <class 'dict'>
type(s) =  <class 'set'> 

 

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***() family

        Python还为字符串类型定义了一堆与数据类型判断相类似的方法用于判断字符串的特征性质。用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版 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨牛慢耕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值