date: 2021-06-12title: python数据类型 #标题
tags: python #标签
categories: python # 分类

python3中有六个标准的数据类型:

  • number(数字)
  • string(字符串)
  • list(列表)
  • tuple(元组)
  • set(集合)
  • dictionary(字典)

可以使用python内置的type()函数来查询对象类型,例如:

  1. print(type(15))
  2. # out:
  3. <class 'int'>

python3的6个标准数据类型中:

  • 不可变数据(3个):number(数字)、string(字符串)、tuple(元组);
  • 可变数据(3个):list(列表)、dictionary(字典)、set(集合)

number(数字)

python3支持:int(整数)、float(浮点数)、bool(布尔值)、complex(复数)

string(字符串)

python中的字符串用单引号或双引号括起来,同时使用反斜杠\转移特殊字符。

字符串的截取语法格式如下:

  1. 变量[头下标:尾下标]

索引值以 0 为开始值,-1 为从末尾的开始位置(在使用索引值输出字符时,遵循的时包头不包尾原则,下面的示例会表现出来这个原则)。如下:

python数据类型 - 图1

加号“+”是字符串的连接符,星号“*”表示复制当前字符串,与之结合的数字为复制的次数。如下:

  1. str = 'hello world'
  2. print(str) # 输出所有字符串
  3. print(str[0:-1]) # 输出第一个到倒数第二个字符串,这就是包头不包尾,结尾指定的不会显示,但开头指定的会显示
  4. print(str[1]) # 输出第二个字符串,也就是“e”
  5. print(str[2:5]) # 输出第三个到第5个字符串
  6. print(str *2) # str字符串输出两次
  7. print(str + 'lvjianzhao') # 输出拼接后的字符串
  8. print(str[2:]) # 输出第三个到最后一个字符
  9. #输出结果如下:
  10. hello world
  11. hello worl
  12. e
  13. llo
  14. hello worldhello world
  15. hello worldlvjianzhao
  16. llo world

python使用反斜杠\作为转义字符,如果不想让它发生转义,可以在字符串前面添加一个r,表示原始字符,另外反斜杠也可以作为续行符,这点和在Linux中一样。

  1. print('hello \n world') # \n表示换行
  2. print(r'hello \n world') # r:不转义
  3. # 第一条指令输出如下:
  4. hello
  5. world
  6. # 第二条指令输出如下:
  7. hello \n world

字符串使用注意:

  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  • 字符串可以用+运算符连接在一起,用*运算符重复。
  • Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  • 使用索引调用字符串时,包头不包尾,如:str[2:-1],则是输出从索引为2开始,到最后一个之前的字符串。
  • Python中的字符串不能改变,比如:str[5]=’m’,会报错。

list(列表)

列表是python中使用最频繁的数据类型,它可以完成大多数集合类的数据结构实现,列表中元素类型可以不相同,它支持数字,字符串以及列表(所谓嵌套)。

列表写在方括号[ ]中,以逗号分隔元素。
和字符串一样,列表同样可以被索引和截取,索引值和字符串的索引值一样,如下:

python数据类型 - 图2

同样支持+ *号,分表表示拼接和重复。如下:

  1. list1 = ['abc', 123, '45', 'def']
  2. list2 = ['ABC', '45', 123, 'DEF']
  3. print(list1 + list2) # 拼接输出两个列表
  4. print(list1 * 3) # list1 输出3次
  5. print(list1[2:]) # 输出list1列表的第三个元素到最后一个元素
  6. print(list1[2]) # 输出列表中的第三个元素
  7. print(list1[1:3]) # 输出第二个到第三个元素(包头不包尾)
  8. print(list1) # 输出整个列表
  9. # 输出如下:
  10. ['abc', 123, '45', 'def', 'ABC', '45', 123, 'DEF']
  11. ['abc', 123, '45', 'def', 'abc', 123, '45', 'def', 'abc', 123, '45', 'def']
  12. ['45', 'def']
  13. 45
  14. [123, '45']
  15. ['abc', 123, '45', 'def']

和字符串不一样的是,list中的元素是可以修改的,如下:

  1. list1 = ['abc', 123, '45', 'def']
  2. print(list1)
  3. list1[2] = 56789
  4. print(list1)
  5. # 输出如下:
  6. ['abc', 123, '45', 'def']
  7. ['abc', 123, 56789, 'def']

list内置了很多方法,这里拿append()、pop()为例,如下:

  1. list1 = ['abc', 123, '45', 'def']
  2. print(list1)
  3. list1.append('lv') # 在列表最后追加元素“lv”
  4. print(list1)
  5. list1.pop(2) # 删除索引值为2的元素,如果不指定索引值,则默认删除列表最后一个元素
  6. print(list1)

list总结:

  • List写在方括号之间,元素用逗号隔开。
  • 和字符串一样,list可以被索引和切片。
  • List可以使用+操作符进行拼接。
  • List中的元素是可以改变的。

tuple(元组)

元组与列表类似,不同之处在于元组的元素不能修改,元组写在小括号()中,元素之间以逗号分隔,元组中的元素类型也可以不相同。这里就在叙述了,相关操作参考list即可。

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

  1. tup=() # 空元组
  2. print(type(tup)) # 输出:<class 'tuple'>
  3. tup=(23) # 错误定义元组示例
  4. print(type(tup)) # 输出:<class 'int'>
  5. tup=(23,) # 只有一个元素的定义方法
  6. print(type(tup)) # 输出:<class 'tuple'>

注意:

  • 与字符串一样,元组的元素不能修改。
  • 元组也可以被索引和切片,方法一样。
  • 注意构造包含 0 或 1 个元素的元组的特殊语法规则。
  • 元组也可以使用+操作符进行拼接。

set(集合)

集合是由一个或数个形态各异的大小整体组成的,构建集合的事物或对象称作元素或是成员。
集合的基本功能是进行成员关系测试和删除重复元素。
可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集合必须使用set(),而不是{},因为{}是用来创建一个空字典。

创建格式:

  1. set1 = {'value1', 'value2'.......}
  2. #或者
  3. set2 = set()

示例:

  1. student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
  2. print(student) # 输出集合,重复的元素被自动去掉
  3. # 成员测试
  4. if 'Rose' in student:
  5. print('Rose 在集合中')
  6. else:
  7. print('Rose 不在集合中')
  8. # set可以进行集合运算
  9. a = set('abracadabra')
  10. b = set('alacazam')
  11. print(a) # 集合内的数据不允许重复
  12. print(b)
  13. print(a - b) # a 和 b 的差集
  14. print(a | b) # a 和 b 的并集
  15. print(a & b) # a 和 b 的交集
  16. print(a ^ b) # a 和 b 中不同时存在的元素
  17. # 输出结果如下:
  18. {'Tom', 'Jack', 'Mary', 'Rose', 'Jim'}
  19. Rose 在集合中
  20. {'c', 'b', 'a', 'r', 'd'}
  21. {'c', 'l', 'm', 'a', 'z'}
  22. {'r', 'd', 'b'}
  23. {'c', 'b', 'l', 'm', 'a', 'z', 'r', 'd'}
  24. {'c', 'a'}
  25. {'m', 'b', 'z', 'r', 'd', 'l'}

dictionary(字典)

列表是有序的对象集合,字典是无序的对象集合,两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过索引位置来存取。

字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

键(key)必须使用不可变类型。

在同一个字典中,键(key)必须是唯一的。

示例如下:

  1. dict = {}
  2. dict['one'] = '01 lvjianzhao'
  3. dict['two'] = '02 zhangsan'
  4. tinydict = {'name': 'lvjianzhao', 'blog': 'lvjianzhao.gitee.io', '职业': 'linux 运维'}
  5. print(dict['one']) # 输出one对应的值:01 lvjianzhao
  6. print(dict['two']) # 输出two对应的值:02 zhangsan
  7. print(tinydict.keys()) # 列出该字典中所有的键,输出:dict_keys(['name', 'blog', '职业'])
  8. print(tinydict.values()) # 列出字典中所有的值,输出:dict_values(['lvjianzhao', 'lvjianzhao.gitee.io', 'linux 运维'])

注意:
1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }。

数据类型转换

函数 描述
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) 将一个整数转换为一个字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串