文章目录
2.4 Python的数据类型
python中有六类数据类型:
● Number(数字)
● String(字符)
● List(列表)
● Tuple(元组)
● Set(集合)
● Dictionary(字典)
Python3的六个标准数据类型中:
● 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
● 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
2.4.1 Number(数字)
python3支持 int、float、bool、complex(复数)
python3里,只有一种整数类型 int,表示长整型,没有python2中的Long
2.4.1.1数值类型的赋值和计算
#赋值语句数据类型
a, b, c, d = 10, 2.3, True, 6-5j
print(type(a), type(b), type(c), type(d))
print(d)
print(d.real) #显示实部
print(d.imag) #显示虚部
print(d.conjugate()) #输出共轭复数
运行程序,结果为:
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
(6-5j)
6.0
-5.0
(6+5j)
2.4.1.2数值运算
a = 1 + 5 #加法
b = 3.2 - 2 #减法
c = 3 * 2 #乘法
d = 2 / 4 #除法,得到一个浮点数
e = 2 //4 #除法,得到一个整数
f = 17 % 3 #取余
g = 2 ** 5 #乘方(2的5次方)
print('a = %d, b = %f, c= %d, d = %d, e = %d, f = %d, g = %d' % (a, b, c, d, e, f, g))
运行程序,结果为:
a = 6, b = 1.200000, c= 6, d = 0, e = 0, f = 2, g = 32
2.4.1.3数字函数
#返回数字的绝对值 abs()
#比较两个数大小 print((6<9) – (9 >6)) -1
#返回给定参数的最大值 print(max(1, 2, 3 ,5)) 5
#返回给定参数的最小值 print(min(1, 2, 3 ,5)) 5
#求x的y次方 2^5 print(pow(2, 5)) 32
#round(x[, n]) 返回浮点数x的四舍五入值,如果给出n值,则代表舍入到小数点后的n位
print(round(3.456)) # 3
print(round(3.556)) # 4
print(round(3.556, 2)) # 3.46
#导入库
# 库:封装一些功能
import math
print(math.ceil(18.1)) # 19 向上取整
print(math.floor(18.9)) # 18 向下取整
print(math.modf(22.3)) # (0.3000000000007, 22.0) 返回小数部分和整数部分(浮点数)
print(math.sqrt(16)) # 4 开方运算
2.4.2 String(字符串)
字符串:以单引号或者双引号括起来的任意文本,例如‘abc’ “abc”
字符串处理函数:
# 创建字符串
str1 = 'abcde'
str2 = 'def'
#字符串的运算
#字符串的连接:
str3 = str1 + str2
print("str3 = ", str3) # str3 = abcdedef
#字符串的乘法:
str4 = str1 * 3
print("str4 = ", str4) # str4 = abcdeabcdeabcde
#访问字符串中的某一个字符:通过索引下标,索引从0开始
print(str1[1]) # b
#截取字符串中的一部分: 总给定下标1开始,截取到给定下标2之前
str5 = str1[1: 5]
print("str5 = ", str5) # str5 = bcde
# in
if 'a' in str1:
print('yes') # yes
#格式化输出
print("123") # 123
num = 10
num2 = 10.2
print("num = ", num) # num = 10
print("num = %d, str6 = %s, num3 = %.2f" %(num, str2, num2))
# num = 10, str6 = def, num3 = 10.20
# %d %s %f 占位符,后面的值未定
# 转义字符:将一些字符转换成有特殊含义的字符
# \n(换行符)
# \' \"
# \t 制表符(四个空格)
# r 表示内部的字符串默认不转义
print("E:\软件学习\Python") # E:\软件学习\Python
# eval():将字符串str当成有效的表达式来求值并返回计算结果
print(eval("12 + 3")) # 15
#len():返回字符串的长度(字符个数)
print(len("123 str as")) #10
str20 = "A Good Man"
# lower(): 将字符串中的大写字母变为小写字母
print(str20.lower()) # a good man
# upper():将字符串中的小写字母变为大写字母
print(str20.upper()) #A GOOD MAN
# swapcase():转换字符串中大写字母为小写,小写字母为大写
print(str20.swapcase()) # a gOOD mAN
# capitalize():首字母大写,其他小写
print(str20.capitalize()) # A good man
# title():每个单词的首字母大写
print(str20.title()) #A Good Man
# center(width, fillchar):返回一个指定宽度,width居中的字符串为填充的字符
print(str20.center(20, "*")) #**** A Good Man*****
2.4.3 List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
创建列表: 列表名 = [列表选项1,列表选项2,……,创建列表n ]
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表操作1:
#创建一个空列表
list1 = []
#创建带有元素的列表
list2 = [11, 12, 13, 14, 15]
index = 0
sum = 0
while index < 5:
sum += list2[index]
index += 1
print("平均值 = %d" % (sum / 5)) # 平均值 = 13
#注意:列表中的元素数据可以是不同类型
#列表元素的访问,注意不要越界(下标超出可取的范围)
#取值格式 : 列表名[下标]
list3 = [1, 2, 3]
print(list3[2]) # 3
列表操作2:
#列表组合:
list = [1, 2, 3, 4, 5]
list4 = list2 + list3
#列表的重复:
list5 = list * 3
#判断元素是否在列表中
print(3 in list5) # True
#列表截取
print(list[2:4],list[:3],list[2:]) #[3, 4] [1, 2, 3] [3, 4, 5]
#二维列表
list6 = [[1, 2],[3, 4],[5, 6]]
print(list6[1]) # [3, 4]
print(list6[0][1]) # 2
列表操作3:
#append: 在列表中末尾添加新的元素
list7 = [1, 2, 3, 4, 5]
list7.append(6)
print(list7) #[1, 2, 3, 4, 5, 6]
list7.append([7, 8, 9])
print(list7) #[1, 2, 3, 4, 5, 6, [7, 8, 9]]
#extend 在末尾一次性追加另一个列表中的多个值
list8 = [1, 2, 3, 4, 5]
list8.extend([6, 7, 8])
print(list8) #[1, 2, 3, 4, 5, 6, 7, 8]
#insert 在下标处添加一个元素,不覆盖原数据,原数据向后顺延
list9 = [1, 2, 3, 4, 5]
list9.insert(1, 100)
print(list9) #[1, 100, 2, 3, 4, 5]
list9.insert(1, [200, 300])
print(list9) #[1, [200, 300], 100, 2, 3, 4, 5]
#pop(x=list[-1]) 移除列表中指定下标中的元素(默认移除最后一个元素)
list10 = [1, 2, 3, 4, 5]
list10.pop()
print(list10) #[1, 2, 3, 4]
list10.pop(2)
print(list10) #[1, 2, 4]
#remove 移除列表中的某个元素第一个匹配的结果
list11 = [1, 2, 3, 4, 5, 4]
list11.remove(4)
print(list11) #[1, 2, 3, 5, 4]
#clear 清除列表中所有数据
list12 = [1, 2, 3, 4, 5, 4]
list12.clear()
print(list12) #[]
#index 从列表中找出某个值第一个匹配的索引值
list13 = [1, 2, 3, 4, 5, 3]
index13 = list13.index(3)
#圈定范围 index(value, [start, [stop]])
index14 = list13.index(3, 4, 7)
print(index13, index14) #2 5
#len 列表中元素个数
list14 = [1, 2, 3, 4, 5, 3]
print(len(list14)) #6
#max 获取列表中的最大值
list15 = [1, 2, 3, 4, 5, 3]
print(max(list15)) # 5
#max 获取列表中的最大值
list16 = [1, 2, 3, 4, 5, 3]
print(max(list16)) # 1
#count 查看元素在列表中出现的次数
list17 = [1, 2, 3, 4, 5, 3]
print(list17.count(3)) #2
列表操作4:
#reverse 倒序
list18 = [1, 2, 3, 4, 5, 3]
list18.reverse()
print(list18) #[3, 5, 4, 3, 2, 1]
#排序 sort
list19 = [1, 2, 3, 4, 5, 3]
list19.sort()
print(list19) #[1, 2, 3, 3, 4, 5]
#浅拷贝 引用拷贝
list20 = [1, 2, 3, 4, 5, 3]
list21 = list20
list21[1] = 100
print(list20) #[1, 100, 3, 4, 5, 3]
print(id(list20)) #1973156821896
print(list21) #[1, 100, 3, 4, 5, 3]
print(id(list21)) #1973156821896
#深拷贝 内存的拷贝
list22 = [1, 2, 3, 4, 5, 3]
list23 = list22.copy()
list23[1] = 100
print(list22) #[1, 2, 3, 4, 5, 3]
print(id(list22)) #2126608710536
print(list23) #[1, 100, 3, 4, 5, 3]
print(id(list23)) #2126614417096
#将元组转成列表
list24 = list((1,2,3,4))
print(list24) #[1, 2, 3, 4]
2.4.4 Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
能用元组,就用元组,因为不可变
元组中的元素类型也可以不相同
元祖的操作1:
# 创建空的元组
tuple1 = ()
print(tuple) #<class 'tuple'>
#创建带有元素的元组,元组中的元素可以不同
tuple2 = (1, 2, 3, "good", True)
print(tuple2) # (1, 2, 3, 'good', True)
#定义只有一个元素的元组
tuple3 = (1,)
print(tuple3) # (1,)
print(type(tuple3)) # <class 'tuple'>
#元组的访问 格式:元组名[] ,下标从0开始
tuple4 = (1, 2, 3, 4, 5)
print(tuple4[2]) # 3
#获取最后一个元素
print(tuple4[-1]) # 5
元祖的操作2:
#修改元组,元素不可变,元素里面的内容可变
tuple4 = (1, 2, 3, 4, [5, 6, 7])
#tuple4[0] = 100 # 报错,元组不能变
tuple4[-1][0] = 50
print(tuple4) #(1, 2, 3, 4, [50, 6, 7])
#删除元组
tuple5 = (1, 2, 3, 4, 5)
del tuple5
# print(tuple5) #NameError: name 'tuple5' is not defined
元祖的操作3:
#元组相加
tuple6 = (1, 2, 3)
tuple7 = (4, 5, 6)
tuple8 = tuple6 + tuple7
print(tuple8) # (1, 2, 3, 4, 5, 6)
#元组相乘
print(tuple6 * 3) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
#判断元素是否元组
print(1 in tuple6) # True
#元组的截取 格式 元组名[开始下标:结束下标]
#从开始下标开始截取,截取到结束下标之前
print(tuple8[2: 5]) #(3, 4, 5)
print(tuple8[2:]) #(3, 4, 5, 6)
print(tuple8[:5]) #(1, 2, 3, 4, 5)
#二维元组:元素为一维元组的元组
tuple9 = ((1, 2),(3, 4),(5, 6))
print(tuple9[2][0]) # 5
元祖的操作4:
tuple10 = (1, 2, 3, 4, 5)
#len(tuple10) 返回元组中元素的个数
#max(tuple10) 返回元组中的最大值
#min(tuple10) 返回元组中的最小值
#将列表转成元组
list = [1, 2, 3]
tuple11 = tuple(list)
print(tuple11) #(1, 2, 3)
# 元组的遍历
for i in (1, 2, 3, 4):
print(i)
2.4.5 Set(集合)
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
print(student) # {'Jack', 'Rose', 'Mary', 'Tom', 'Jim'}
# 成员测试
if 'Rose' in student:
print('Rose 在集合中')
else:
print('Rose 不在集合中') # Rose 在集合中
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a) # {'a', 'c', 'd', 'r', 'b'}
print(a - b) # {'r', 'd', 'b'}
print(a | b) # {'m', 'a', 'c', 'z', 'd', 'r', 'l', 'b'}
print(a & b) # {'c', 'a'}
print(a ^ b) # {'l', 'm', 'r', 'b', 'd', 'z'}
2.4.6 Dictionary(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
dict = {}
dict['one'] = "1 - 菜鸟教程"
dict[2] = "2 - 菜鸟工具"
tinydict = {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
print(dict['one']) # 1 - 菜鸟教程
print(dict[2]) # 2 - 菜鸟工具
print(tinydict) # {'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
print(tinydict.keys()) # dict_keys(['name', 'code', 'site'])
print(tinydict.values()) # dict_values(['runoob', 1, 'www.runoob.com'])
2.4.7 数据类型之间的转换
函数 | 描述 |
---|---|
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) | 将一个整数转换为一个八进制字符串 |