python中type 5.5_Python 数据类型

对于任何编程语言来说,每一个值都有相应的数据类型。Python 也不例外,它也有很多数据类型。

d635bbaf9ac415049ffdcbd7b4aa27bc.png

在 Python 中,一切(万物)皆对象。数据类型实际上是类,变量是这些类的实例(对象)。

1

标准数据类型

Python 中有六大标准数据类型:

数字(int、float、complex)

字符串(str)

列表(list)

元组(tuple)

集合(set)

字典(dict)

可以使用内置函数 type() 来检查对象的类型:

>>> i = 5# 整形

>>> type(i)

>>>

>>> s = 'Hello, World!'# 字符串>>> type(s)

也可以使用内置函数 isinstance()来判断对象是否属于一个特定的类:

>>> isinstance(i, int)  # 属于整形

True

>>>

>>> isinstance(s, str)  # 属于字符串

True

2

数字

Python 支持三种不同的数字类型,它们分别是:

整型(int)

浮点型(float)

复数(complex)

注意:Python 3.x 去除了 long 类型,现在只有一种整型 - int,表示为长整型。

整数可以是任何长度,只受到可用内存的限制:

>>> i = 5

>>> type(5)

>>>

>>> i = 2 ** 500# 2 的 500 次幂>>> i

3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376

浮点型由整数部分与小数部分组成,默认可精确至 17 位小数:

>>> f = 0.12

>>> type(f)

>>>

>>> f = 0.12345678901234567890# 值被截断>>> f

0.12345678901234568

复数以x + yj 的形式组成,x 是实部,y 是虚部。可以使用内置函数 complex() 来创建:

>>> c = complex(2, 3)

>>> type(c)

>>>

>>> c

(2+3j)

>>>

>>> c.real# 实部2.0

>>> c.imag# 虚部3.0

当然,也可以不使用它:

>>> c = 2 + 3j

>>> c

(2+3j)

3

字符串

字符串是 Unicode 字符的序列。

可以使用单引号('')或双引号("")来表示字符串,多行字符串可以使用三引号(''' 或 """)来表示。

>>> s = 'Hello, World!'

>>> type(s)

各种表示方式:

>>> s = 'Hello, World!'  # 单引号

>>> s

'Hello, World!'

>>>

>>> s = "Hello, World!"  # 双引号

>>> s

'Hello, World!'

>>>

>>> s = '''Hello,# 三重单引号... World!'''

>>> s

'Hello,\nWorld!'

>>>

>>> s = """Hello,# 三重双引号... World!"""

>>> s

'Hello,\nWorld!'

字符串可以被索引和截取,截取的语法格式如下:

变量[头下标:尾下标]

索引位置从 0 开始,-1 为从末尾的开始位置。

>>> s = 'Hello, World!'

>>> s[4]  # 第五个字符

'o'

>>>

>>> s[7:10]  # 第八个开始到第十个的字符

'Wor'

>>>

>>> s[-4:-1]  # 倒数第四个开始到倒数第一个的字符

'rld'

>>>

>>> s[5] = 'p'  # 错误,字符串是不可变的

Traceback (most recent call last):

File "", line 1, in 

TypeError: 'str' object does not support item assignment

加号(+)是字符串的连接符, 星号(*) 表示复制当前字符串,紧跟的数字为复制的次数。

>>> s1 = 'Hello,'

>>> s2 = ' World!'

>>>

>>> s1 + s2  # 连接字符串

'Hello, World!'

>>>

>>> (s1 + s2) * 3  # 复制 3 次字符串

'Hello, World!Hello, World!Hello, World!'

4

列表

列表是有序的元素序列,它是 Python 中使用最频繁的数据类型,非常灵活。

列表中元素的类型可以不同,支持数字、字符串,甚至可以包含列表(所谓的嵌套)。

列表用 [] 标识,内部元素用逗号分隔。

>>> l = [1, 5.5, 'Python']

>>> type(l)

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

>>> l = [3, 2, 5, 4, 1]

>>> l

[3, 2, 5, 4, 1]  # 有序

>>>

>>> l[2]  # 第三个元素

5

>>>

>>> l[0:3]  # 从第一个元素到第三个元素

[3, 2, 5]

>>>

>>> l[3:]  # 从第三个元素开始的所有元素

[4, 1]

列表是可变的,意思是说,列表中的元素可以被更改:

>>> l = [1, 2, 3]

>>> l[2] = 5  # 将第三个元素 3 变为 5

>>> l

[1, 2, 5]

5

元组

与列表相同,元组也是有序序列。唯一的区别是:元组是不可变的,而列表是可变的。

元组适用于保护性的数据,通常比列表快,因为它不能动态更改。

元组用 () 标识,内部元素用逗号分隔。

>>> t = (5, 'Python', 2+3j)

>>> type(t)

元组也可以被索引和截取,但是不能被更改。

>>> t = (3, 2, 5, 4, 1)

>>> t

(3, 2, 5, 4, 1)  # 有序

>>>

>>> t[1]  # 第二个元素

2

>>>

>>> t[0:2]  # 从第一个元素到第二个元素

(3, 2)

>>>

>>> t[0] = 10  # 错误,元组是不可变的

Traceback (most recent call last):

File "", line 1, in 

TypeError: 'tuple' object does not support item assignment

虽然元组中的元素不可变,但它可以包含可变的对象(例如:列表)。

构造一个空的或者包含一个元素的元组比较特殊,所以要采用一些额外的语法规则:

>>> tup1 = ()     # 空元组

>>> tup2 = (5, )  # 一个元素,需要在元素后添加逗号

6

集合

集合是一个无序不重复元素集,用 {} 标识,其内部元素用逗号分隔。

可以使用大括号 {} 或者 set() 函数创建集合。但若要创建一个空集合,必须使用 set() 而非 {},因为 {} 用于创建空字典。

>>> s = {5, 'Python', 2+3j}

>>> type(s)

既然集合是无序的,那么索引就没有任何意义。也就是说,切片操作符 [] 不起作用。

>>> s = {'Java', 'Python', 'C++'}

>>> s

{'Java', 'C++', 'Python'}  # 无序

>>>

>>> s[1]  # 错误,不支持索引

Traceback (most recent call last):

File "", line 1, in 

TypeError: 'set' object does not support indexing

不重复,是指集合中相同的元素会被自动过滤掉,只保留一份:

>>> s = {'Java', 'Python', 'C++', 'Python', 'C++'}

>>> s

{'Java', 'C++', 'Python'}  # 去重

除了去重之外,还常用于成员关系的测试:

>>> if ('Python' in s) :

...      print('Python 在集合中')

... else :

...      print('Python 不在集合中')

...

Python 在集合中

集合之间也可执行运算,例如:并集、差集、交集。

>>> a = set('abcdefg')

>>> b = set('abghijk')

>>>

>>> a

{'d', 'c', 'f', 'a', 'e', 'b', 'g'}

>>> b

{'h', 'i', 'j', 'a', 'k', 'b', 'g'}

>>>

>>> a - b  # 差集

{'e', 'f', 'd', 'c'}

>>>

>>> a | b  # 并集

{'d', 'c', 'h', 'i', 'f', 'j', 'a', 'e', 'k', 'b', 'g'}

>>>

>>> a & b  # 交集

{'a', 'b', 'g'}

>>>

>>> a ^ b  # 对称差 - 不同时存在的元素

{'c', 'h', 'i', 'd', 'f', 'j', 'k', 'e'}

对称差公式:A Δ B = (A − B) ∪(B − A),也可表示为两个集合的并集减去它们的交集:A Δ B = (A ∪B) − (A ∩B)。

7

字典

字典是键值对的无序集,用 {} 标识,其中的每个元素都以 key:value的形式出现,key 和 value 可以是任何类型。

通常在有大量的数据时会使用,在检索数据时字典做了优化,必须知道要检索的 value 所对应的 key。

>>> d = {1:'val', 'key':2}

>>> type(d)

可以用 key 来检索相应的 value,但相反则不行。

>>> d = {}  # 创建空字典

>>> d['name'] = 'Python'  # 增加新的键/值对

>>> d['site'] = 'www.python.org'

>>>

>>> d

{'name': 'Python', 'site': 'www.python.org'}

>>>

>>> d['site']  # 键为 'site' 的值

'www.python.org'

>>>

>>> d['Python']  # 错误,不能用 value 检索 key

Traceback (most recent call last):

File "", line 1, in 

KeyError: 'Python'

字典有一些内置的函数,例如:keys()、values()、clear() 等。

>>> d.keys()  # 所有的键

dict_keys(['name', 'site'])

>>>

>>> d.values()  # 所有的值

dict_values(['Python', 'www.python.org'])

>>>

>>> d.clear()  # 清空字典

>>> d

{}

8

数据类型之间的转换

可以使用不同的类型转换函数来转换不同的数据类型,例如:int()、float()、str() 等。

从 int 转换为 float:

>>> float(5)

5.0

从 float 到 int 的转换,值将会被截断(使其接近零):

>>> int(10.8)

10

>>>

>>> int(-10.8)

-10

字符串的转换必须包含兼容的值:

>>> float('2.5')

2.5

>>>

>>> str(25)

'25'

>>>

>>> int('py')  # 'py' 是字符串,无法转换为整形

Traceback (most recent call last):

File "", line 1, in 

ValueError: invalid literal for int() with base 10: 'py'

甚至可以将一个序列转换为另一个序列:

>>> set([1, 2, 3])  # 列表转换为集合

{1, 2, 3}

>>>

>>> tuple({4, 5, 6})  # 集合转换为元组

(4, 5, 6)

>>>

>>> list('hello')  # 字符串转换为列表

['h', 'e', 'l', 'l', 'o']

要转换为字典,每个元素必须是一对:

>>> dict([[1, 'val'], ['key', 2]])

{1: 'val', 'key': 2}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值