date: 2021-06-12title: python数据类型 #标题
tags: python #标签
categories: python # 分类
python3中有六个标准的数据类型:
- number(数字)
- string(字符串)
- list(列表)
- tuple(元组)
- set(集合)
- dictionary(字典)
可以使用python内置的type()函数来查询对象类型,例如:
print(type(15))
# out:
<class 'int'>
python3的6个标准数据类型中:
- 不可变数据(3个):number(数字)、string(字符串)、tuple(元组);
- 可变数据(3个):list(列表)、dictionary(字典)、set(集合)
number(数字)
python3支持:int(整数)、float(浮点数)、bool(布尔值)、complex(复数)
string(字符串)
python中的字符串用单引号或双引号括起来,同时使用反斜杠\
转移特殊字符。
字符串的截取语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置(在使用索引值输出字符时,遵循的时包头不包尾原则,下面的示例会表现出来这个原则)。如下:
加号“+”是字符串的连接符,星号“*”表示复制当前字符串,与之结合的数字为复制的次数。如下:
str = 'hello world'
print(str) # 输出所有字符串
print(str[0:-1]) # 输出第一个到倒数第二个字符串,这就是包头不包尾,结尾指定的不会显示,但开头指定的会显示
print(str[1]) # 输出第二个字符串,也就是“e”
print(str[2:5]) # 输出第三个到第5个字符串
print(str *2) # str字符串输出两次
print(str + 'lvjianzhao') # 输出拼接后的字符串
print(str[2:]) # 输出第三个到最后一个字符
#输出结果如下:
hello world
hello worl
e
llo
hello worldhello world
hello worldlvjianzhao
llo world
python使用反斜杠\
作为转义字符,如果不想让它发生转义,可以在字符串前面添加一个r
,表示原始字符,另外反斜杠也可以作为续行符,这点和在Linux中一样。
print('hello \n world') # \n表示换行
print(r'hello \n world') # r:不转义
# 第一条指令输出如下:
hello
world
# 第二条指令输出如下:
hello \n world
字符串使用注意:
- 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
- 字符串可以用+运算符连接在一起,用*运算符重复。
- Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- 使用索引调用字符串时,包头不包尾,如:str[2:-1],则是输出从索引为2开始,到最后一个之前的字符串。
- Python中的字符串不能改变,比如:str[5]=’m’,会报错。
list(列表)
列表是python中使用最频繁的数据类型,它可以完成大多数集合类的数据结构实现,列表中元素类型可以不相同,它支持数字,字符串以及列表(所谓嵌套)。
列表写在方括号[ ]
中,以逗号分隔元素。
和字符串一样,列表同样可以被索引和截取,索引值和字符串的索引值一样,如下:
同样支持+ *
号,分表表示拼接和重复。如下:
list1 = ['abc', 123, '45', 'def']
list2 = ['ABC', '45', 123, 'DEF']
print(list1 + list2) # 拼接输出两个列表
print(list1 * 3) # list1 输出3次
print(list1[2:]) # 输出list1列表的第三个元素到最后一个元素
print(list1[2]) # 输出列表中的第三个元素
print(list1[1:3]) # 输出第二个到第三个元素(包头不包尾)
print(list1) # 输出整个列表
# 输出如下:
['abc', 123, '45', 'def', 'ABC', '45', 123, 'DEF']
['abc', 123, '45', 'def', 'abc', 123, '45', 'def', 'abc', 123, '45', 'def']
['45', 'def']
45
[123, '45']
['abc', 123, '45', 'def']
和字符串不一样的是,list中的元素是可以修改的,如下:
list1 = ['abc', 123, '45', 'def']
print(list1)
list1[2] = 56789
print(list1)
# 输出如下:
['abc', 123, '45', 'def']
['abc', 123, 56789, 'def']
list内置了很多方法,这里拿append()、pop()为例,如下:
list1 = ['abc', 123, '45', 'def']
print(list1)
list1.append('lv') # 在列表最后追加元素“lv”
print(list1)
list1.pop(2) # 删除索引值为2的元素,如果不指定索引值,则默认删除列表最后一个元素
print(list1)
list总结:
- List写在方括号之间,元素用逗号隔开。
- 和字符串一样,list可以被索引和切片。
- List可以使用+操作符进行拼接。
- List中的元素是可以改变的。
tuple(元组)
元组与列表类似,不同之处在于元组的元素不能修改,元组写在小括号()
中,元素之间以逗号分隔,元组中的元素类型也可以不相同。这里就在叙述了,相关操作参考list即可。
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup=() # 空元组
print(type(tup)) # 输出:<class 'tuple'>
tup=(23) # 错误定义元组示例
print(type(tup)) # 输出:<class 'int'>
tup=(23,) # 只有一个元素的定义方法
print(type(tup)) # 输出:<class 'tuple'>
注意:
- 与字符串一样,元组的元素不能修改。
- 元组也可以被索引和切片,方法一样。
- 注意构造包含 0 或 1 个元素的元组的特殊语法规则。
- 元组也可以使用+操作符进行拼接。
set(集合)
集合是由一个或数个形态各异的大小整体组成的,构建集合的事物或对象称作元素或是成员。
集合的基本功能是进行成员关系测试和删除重复元素。
可以使用大括号{ }
或者set()函数创建集合,注意:创建一个空集合必须使用set(),而不是{},因为{}
是用来创建一个空字典。
创建格式:
set1 = {'value1', 'value2'.......}
#或者
set2 = set()
示例:
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(student) # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Rose' in student:
print('Rose 在集合中')
else:
print('Rose 不在集合中')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a) # 集合内的数据不允许重复
print(b)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
# 输出结果如下:
{'Tom', 'Jack', 'Mary', 'Rose', 'Jim'}
Rose 在集合中
{'c', 'b', 'a', 'r', 'd'}
{'c', 'l', 'm', 'a', 'z'}
{'r', 'd', 'b'}
{'c', 'b', 'l', 'm', 'a', 'z', 'r', 'd'}
{'c', 'a'}
{'m', 'b', 'z', 'r', 'd', 'l'}
dictionary(字典)
列表是有序的对象集合,字典是无序的对象集合,两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过索引位置来存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
示例如下:
dict = {}
dict['one'] = '01 lvjianzhao'
dict['two'] = '02 zhangsan'
tinydict = {'name': 'lvjianzhao', 'blog': 'lvjianzhao.gitee.io', '职业': 'linux 运维'}
print(dict['one']) # 输出one对应的值:01 lvjianzhao
print(dict['two']) # 输出two对应的值:02 zhangsan
print(tinydict.keys()) # 列出该字典中所有的键,输出:dict_keys(['name', 'blog', '职业'])
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) | 将一个整数转换为一个八进制字符串 |