二,Python的基本数据类型
一,什么是数据类型
1,Python中自定义一些数据类型,用来表示不同的信息,以便于计算机更好的储存和计算。
2,为什么要定义数据类型,在解决现实问题的时候我们通常需要用编程的思维描述我们需要操作的对象,例如我们需要描述一个用户,他由多种属性组成,比如账号,密码,姓名,年龄,性别等等,这多种属性组合到一起,在计算机中就代表一位用户,而为了区分和表达这些属性,就定义了不同的数据类型,用对应的数据类型去表示对应的属性,以便于计算机更好的储存跟操作。
二,基本数据类型种类
一,数值类型
1,整数 int()
数学意义上的整数(正整数,0,负整数的集合)
创建方式:n = 123 n = int(123) 其中n代表变量名,此行代码的意思是将“=”右边的值赋予左边的变量
Python中整数的取值范围,理论上是负无穷到正无穷,实际大小取决于电脑内存大小
2,浮点数 float()
数学意义上的浮点数,也可以理解成小数
创建方式:n = 1.23 n = float(1.23)
整数可以跟浮点数相互转化
所有的整数都可以被浮点数来表示,为什么还要设计整数的数据类型呢?因为相同的操作,整数要比浮点数快5-20倍
3,复数
科学计算中的复数
创建方式:n = 1.23+4j
二,运算符
1,数学运算符
+ - * / ** // %
2,赋值运算符
= += -= *= /= **= //= %=
3,比较运算符
< > == != <= >= is
4,逻辑运算符
and or not
5,成员运算符
in not in
二,序列类型
1,字符串
在Python中,字符串是用单引号,双引号,三引号引起来的字符序列,用来表示文本信息 str
a = ‘abc‘ b = "abc" c = ‘‘‘abc‘‘‘
c = ‘‘‘
a
b
c
‘‘‘
用单引号或者双引号创建字符串没有任何区别,如果要创建的字符串中含有单引号,则用双引号定义该字符串,反之一样
单引号和双引号都只能创建一行字符串,三引号可创建多行字符串。三引号一般作为多行注释来使用。
索引
任何序列类型中的元素,都有索引来表示它在序列中的位置
序列从左往右是从0开始,从右往左是从-1开始
取字符串对应索引的元素:str[index]
切片
获取序列中的子序列
语法:str[start:end:step] start为起始位置,end为结束位置,step为步长。切片包含起始位置,不包含结束位置
s = ‘012345‘
s[1:5] 表示取索引为1到4的元素,步长为1的时候可以省略
s[:5] 从开头开始切可以省略开头
s[1:] 切到末尾可以省略末尾
s[1::2] 步长为2进行切片,结果为:135
s[1::-2] 步长为负数则反向切片,结果为:1
字符串拼接
Python中字符串可以用“+”来拼接
a = ‘hello‘
b = ‘ ‘
c = ‘world!‘
print(a+b+c)
结果为:hello world!
字符串和整数进行乘法运算表示反复拼接
print(‘*‘ * 10)
结果为:**********
字符串常用方法
dir与help
dir(str) dir是Python中的内建函数,它可以查询传入的对象的所有方法名称
help(str.startswith) 通过help内建函数可以返回传入函数的提示帮助信息
字符串和数值相互转化
1.2 和 ‘1.2‘ 是不一样的数据类型,前者为浮点数,后者为字符串,但是他们可以互相转化
str(1.2) 将浮点数1.2转化为字符串‘1.2‘
float(‘1.2‘)将字符串‘1.2‘转化为浮点数1.2
int(‘1‘)将字符串‘1‘转化为整数1
转义符
在Python中,当想使用特殊字符的时候可以用反斜杠“\”转义符
\\ 反斜杠符号
\‘ 单引号
\" 双引号
\a 响铃
\n 换行
\t 横向制表符
\r 回车
\f 换页
format函数格式化
‘{}计算机内存利用率为{}%‘.format(‘1:02‘,45)
‘{0}计算机内存利用率为{}%‘.format(‘1:02‘,45)
‘{time}计算机内存利用率为{percent}‘.format(time=‘1:02‘,percent=45)
2,列表
Python中用来表示有序可变的元素集合,元素可以是任意数据类型。
如何定义
Python中列表的定义用中括号,元素与元素之间用逗号隔开
list = [] 空列表
list = [1,2,‘a‘,[‘a‘,3]] 嵌套
列表拼接
列表可以用加法进行拼接,也可以与整数相乘实现重复
[1,2,3] + [1,2,3] 结果为[1,2,3,1,2,3]
[1,2,3] * 3 结果为[1,2,3,1,2,3,1,2,3]
列表的索引与切片
list = [1,2,[‘a‘,‘b‘]]
list[2][1] 注意嵌套的元素获取
列表的常用操作
列表是Python中经常用到的数据类型,非常重要,它的操作也十分灵活
修改元素
l = [1,2,3]
l[1] = ‘a‘ 结果为[1,‘a‘,3]
增加元素
.append() 在列表末尾添加一个元素
l.append(4) 结果为[1,2,3,4]
.insert() 在指定索引位置添加一个元素
l.insert(0,0) 结果为[0,1,2,3]
.extend() 扩展列表,元素为可迭代对象中的元素
l.extend([4,5,6]) 结果为[1,2,3,4,5,6]
删除元素
.pop() 删除指定索引位置的元素,并返回该元素,未指定索引则默认删除最后一个元素
l.pop() 结果为3 l.pop(1) 结果为2
.remove() 从列表中删除一个指定值的元素,如不存在该值,则报错
l.remove(1) 结果为[2,3]
.clear() 清空列表,原列表变成空列表
l.clear() 结果为[]
其他方法
.copy() 返回一个列表的浅拷贝。
.count() 统计列表中指定值出现的次数
l = [1,2,3,1] l.count(1) 结果为2
.index() 返回列表中指定值的第一个索引,不存在则报错,默认从第一个位置开始找,也可以指定起始位置
l.index(1) 结果为0
l.index(1,1) 结果为3
.reverse() 翻转列表元素位置
l.reverse() 结果为[3,2,1]
.sort() 对列表进行排序,默认是从小到大,当参数reverse = True时,则从大到小。注意,列表中的元素类型需要相同,否则抛出异常。
l = [1,3,2] l.sort() 结果为[1,2,3]
l.sort(reverse=True) 结果为[3,2,1]
字符串和列表转换
字符串是字符组成的序列,可以用list函数将其转换成单个字符的列表。
s = ‘world!‘ s_list = list(s) 结果为[‘w‘,‘o‘,‘r‘,‘l‘,‘d‘,‘!‘]
由字符组成的列表可以通过字符串的join方法进行拼接
‘hello ‘.join(s_list) 结果为‘hello world!‘
3,元组
元组是有序不可变元素的集合,元素可以是任意数据类型,可以理解为元组是不可变列表
如何定义
在Python中,元组用小括号来定义,元素之间用逗号隔开
t = () 空元组
t = (1,2,[],‘a‘,(1,‘b‘)) 嵌套
注意单元素元组的定义
t = (‘a‘) 类型为字符串
t = (‘a‘,) 类型为元组
索引和切片
序列的索引和切片完全一致,参考字符串索引切片
常用操作
元组元素不能修改,增加,删除,其他跟列表一致
因元组不可修改的特性,经常用在多变量赋值跟函数多返回值上
a,b = (1,2) 经常会缩写为a,b = 1,2
此行代码等价于 a = 1 b = 2
常用方法
count与index,跟列表一致
len函数
Python中的内建函数len,可以获取对象中包含几个元素
s = ‘hello‘ len(s) 结果为5
l = [1,2,3] len(l) 结果为3
t = (1,2,3) len(t) 结果为3
三,可变与不可变类型
Python中的数据类型分为可变与不可变类型,其中列表,字典,集合为可变类型,其他基本类型为不可变类型。
不可变数据类型:创建后不可修改,只能重新创建
如果判断是否为可变类型
Python中有内建函数hash,可以对数据进行计算,凡是能被hash的,则为不可变类型,不能被hash的为可变类型
能被hash则会返回一段数字结果,不能被hash的则会抛出异常
四,散列类型
散列类型用来表示无序的集合
1,集合
集合表示无序且不重复的元素集合
如何定义
集合用一对大括号来定义,元素用逗号隔开。集合中的元素必须是不可变类型。
s ={1,2,3}
s = {1,2,(3,4)} 集合中的元素必须是不可变类型
注意空集合的定义
s = set() 代表空集合
s = {} 代表空字典
常用操作
添加元素
add和update,可以简单的理解为add是添加一个元素,update是批量添加元素
s = {1,2}
s.add(3) 结果为{1,2,3},如果添加的元素不存在,则添加
s.update([2,3]) 结果为{1,2,3},update中传入的参数为可迭代的,会将每个元素都更新入集合,不重复则添加
删除元素
.pop() 随机删除集合中一个元素,并返回该元素,如集合为空,则抛出异常
.remove() 从集合中删除指定元素,如不存在则抛出异常
.discard() 从集合中删除指定元素,如不存在则无操作
.clear() 清空集合
集合运算
& 交集 既属于A也属于B的所有元素集合
| 并集 A和B所有元素的集合
- 差集 属于A但不属于B的所有元素集合
^ 反交集 除开A,B交集中的元素的其他元素集合
集合去重
集合有去重的属性,所以可以利用它来去除序列中的重复项
set(‘aabbcc‘) 结果为{‘a‘,‘b‘,‘c‘}
l = [1,1,2,2,3,3]
l = list(set(l)) 结果为[1,2,3]
2,字典
因为集合中的元素是无序的,所以无法便捷的获取特定的值。利用集合中的元素不重复的特性,是其映射不同的值,组成键值对,再利用相应的key来获取特定的值。
定义
在Python中,字典就是键值对的集合,用大括号定义,键值对之间用逗号隔开,键和值用冒号分割。
字典中的键必须是不可变元素,并且不重复,值可以是任意数据类型
d = {} 空字典
d = {
1:2,
‘k1‘:‘a‘,
(‘k2‘):‘b‘,
‘k3‘:[‘a‘,‘b‘],
‘k4‘:(1,2,3)
‘k5‘:{1:2,
‘k1‘:‘a‘
}
}
索引
字典中的键值对是无序的,利用key来获取相应的值
d = {
‘k1‘:123,
‘k2‘:‘abc‘
}
print(d[‘k1‘]) 结果为123
print(d[‘k2‘]) 结果为‘abc‘
常用操作
增加元素
d = {‘name‘:‘wxf‘}
d[‘age‘] = 18 print(d) 结果为{‘name‘:‘wxf‘,‘age‘:18}
n_d = {‘sex‘:‘男‘,‘age‘:18}
d.update(n_d) print(d) 将新字典n_d的内容合并到d中,结果为{‘name‘:‘wxf‘,‘sex‘:‘男‘,‘age‘:18}
d.update({‘sex‘:‘女‘,‘height‘:170}) 如果有重复的key,则覆盖原值,结果为{‘name‘:‘wxf‘,‘sex‘:‘女‘,‘age‘:18,‘height‘:170}
修改元素
直接通过key索引的方式修改对应的值,如果key不存在则添加
删除元素
d.pop(key,a) 删除指定key的值,并返回该值,若key不存在则返回a,若没有指定a,则抛出异常
d = {1:2,‘a‘:‘b‘}
d.pop(‘a‘) 结果为‘b‘
d.pop(‘k1‘,‘error‘) 结果为‘error‘
d.popitem() 任意删除字典中的一个键值对,并以二元元组(key,value)的方式返回 结果为(‘a‘,‘b‘)
查询元素
以字典中的索引key查询对应的值,如key不存在,则抛出异常
d = {1:2,3:4} print(d[3]) 结果为4
d.get(key,default=None) 获取key对应的值,如key不存在,则返回default
d.get(1) 结果为2
五,其他类型
1,布尔值
条件表达式的运算结果返回布尔值,True/False,表示真/假
布尔值运算
布尔值可以和数值类型数据进行数学运算,这时True代表1,False代表0
布尔值类型转换
在Python中,任意数据都可以用函数bool()转换成布尔型。
其中None,0(整数),0.0(浮点数),0.0+0.0j(复数),空字符串,空列表,空元组,空字典,空集合的布尔值为False,其他的都为True。
2,None值
None是Python中的特殊数据类型,它的值就是它本身None,表示空,不存在。