Python中的数据类型
2017-04-15 11:28
162 查看
Python中的数据类型一、数字1、int(整型)长整数:不过是大一些的整数。。 跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
2、float(浮点型) 浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
3、complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。注:Python中存在小数字池:-5 ~ 257 二、字节(bytes):
Pthon3对文本和二进制数据做了更为清晰的区分,文本是Unicode,由str表示,二进制数据由bytes类型表示;python3不会以任意隐式方式混用str和bytes,不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。
字节和字符的转化
真或假 1 或 0四、字符串
1、万恶的字符串拼接: python中的字符串是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空间,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。2、字符串格式化输出:
3、字符串的操作:(1)、字符串常用功能:移除空白、分割、长度、索引、切片(2)、字符串的操作1)去掉空白:
(1)索引和切片操作:>>> age = 34>>> name =["dayi123",34,"liu",35,age] #创建一个列表,可以包括字符串、数字及变量>>> name[0:2] #取列表中第0个元素到第1个元素['dayi123', 34]>>> name[-3:-1] #取列表中倒数第2个到倒数第3个元素['liu', 35]>>> name[-3:]['liu', 35, 34]>>> name[:3] #取列表中前三个元素['dayi123', 34, 'liu'] >>> name[:4][1:3] #取列表中前四个元素,再取前四个元素的1到2个元素[34, 'liu']>>> name[:4][1:3][1] 'liu'>>> name[:4][1:3][1][1] #切片,取字符'i'(2)更改数据操作:>>> name[2] = "liuyi" #更改列表中第二个元素的值,更改为“liuyi”>>> name['dayi123', 34, 'liuyi', 35, 34] (3)插入及追加操作:>>> name.insert(4,'dayi') #在第4个元素处插入“dayi”>>> name['dayi123', 34, 'liuyi', 35, 'dayi', 34]>>> name.append("day") #在结尾插入一个元素”day”>>> name['dayi123', 34, 'liuyi', 35, 'dayi', 34, 'day'](4)删除操作>>> name.remove("day") #删除列表中的元素”day”>>> name['dayi123', 34, 'liuyi', 35, 'dayi', 34]>>> del name[2:4] #删除第2个元素到第3个元素>>> name['dayi123', 34, 'dayi', 34]>>> del name #删除整个列表(5)判断列表中某个元素存在个数:
name.pop(2) #删除最后一个元素(9)复制列表:
方法一、s1 ={11,12}
S2 = set()
方法二、set([11,12,13,14])
2操作集合
1)、创建、添加元素、清空集合
a & b #求交集 a.intersection(b) a | b #求并集 a.union(b) a – b # 求差集 a.difference(b) a ^ b #求对称差集 a.symmetric_difference(b) a.issubset(b) #a 是b 的子集 a.issuperset(b) # a 是否包含b九、字符的编码与解码1、字符的编码与解码
(1)在python2默认编码是ASCII, python3里默认是unicode(2)unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),utf-16就是现在最常用的unicode版本,不过在文件里存的还是utf-8,因为utf8省空间(3)在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string2、python3的字符编码与解码
3、python2的字符编码与解码
2、float(浮点型) 浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
3、complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。注:Python中存在小数字池:-5 ~ 257 二、字节(bytes):
Pthon3对文本和二进制数据做了更为清晰的区分,文本是Unicode,由str表示,二进制数据由bytes类型表示;python3不会以任意隐式方式混用str和bytes,不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。
字节和字符的转化
#!/usr/bin/env python # Author:dayi123 msg = "刘毅" print(msg.encode()) print(b'\xe5\x88\x98\xe6\xaf\x85'.decode())三、布尔值:
真或假 1 或 0四、字符串
1、万恶的字符串拼接: python中的字符串是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空间,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。2、字符串格式化输出:
name = "dayi123" print "i am %s " % name #输出: i am alexPS: 字符串是 %s;整数 %d;浮点数%f
3、字符串的操作:(1)、字符串常用功能:移除空白、分割、长度、索引、切片(2)、字符串的操作1)去掉空白:
username = input("user:") if username.strip() == "dayi123": #strip 移除空白 print("welcome")2)字符串分割
name= "dayi123,dayi,liuyi" name2 = name.split(",") #将name转化为列表并赋值给name2 print(name2) print("|".join(name2)) #强name2列表转化为字符串,以“|”分割 job = "liuyi" print('' in job) #判断“job”是不是字符串 print(job.capitalize()) #强”job”中字符串分割打印出来 msg = "hello,{job},it's been a long {age} since time sopken...." #msg2 = msg.format(job='dayi',age=22) #print(msg2) #打印通过msg格式化后的字符串 msg2 = "hello{0},dddd{1}" print(msg2.format('dayi',22)) #直接格式化后打印出来3)字符串切片:
name = "liu yi" print(name[2:4]) #打印第二到第三个字符串 print(name.center(40,'-')) #打印name中40个字符串,不够则以“—”填充 print(name.find('l')) #查找“l”是第几个字符4)判断输入的是不是数字:
age =input("your age:") if age.isdigit(): #判断输入的是不是数字 age = int(age) print("your age:",age) else: print("invalid data type")5)判断字符串:
name= 'daf!df34' print(name.isalnum()) #判断输入的字符串中有没有特殊符号 print(name.endswith('df')) #判断输入的字符串是不是以“df”结尾 print(name.startswith('da')) #判断输入的字符串是不是以“da”开头 print(name.upper().upper()) #” upper()”将所有的字符串转化成大写 print(name.upper().lower()) #” lower()”将所有的字符串转化成小写五、列表1 创建列表:
name_list = ['alex', 'seven', 'eric'] #列表里面可以存任何东西 或 name_list = list(['alex', 'seven', 'eric'])2、列表基本操作:索引、切片、追加、删除、长度、切片、循环、包含3、列表操作:
(1)索引和切片操作:>>> age = 34>>> name =["dayi123",34,"liu",35,age] #创建一个列表,可以包括字符串、数字及变量>>> name[0:2] #取列表中第0个元素到第1个元素['dayi123', 34]>>> name[-3:-1] #取列表中倒数第2个到倒数第3个元素['liu', 35]>>> name[-3:]['liu', 35, 34]>>> name[:3] #取列表中前三个元素['dayi123', 34, 'liu'] >>> name[:4][1:3] #取列表中前四个元素,再取前四个元素的1到2个元素[34, 'liu']>>> name[:4][1:3][1] 'liu'>>> name[:4][1:3][1][1] #切片,取字符'i'(2)更改数据操作:>>> name[2] = "liuyi" #更改列表中第二个元素的值,更改为“liuyi”>>> name['dayi123', 34, 'liuyi', 35, 34] (3)插入及追加操作:>>> name.insert(4,'dayi') #在第4个元素处插入“dayi”>>> name['dayi123', 34, 'liuyi', 35, 'dayi', 34]>>> name.append("day") #在结尾插入一个元素”day”>>> name['dayi123', 34, 'liuyi', 35, 'dayi', 34, 'day'](4)删除操作>>> name.remove("day") #删除列表中的元素”day”>>> name['dayi123', 34, 'liuyi', 35, 'dayi', 34]>>> del name[2:4] #删除第2个元素到第3个元素>>> name['dayi123', 34, 'dayi', 34]>>> del name #删除整个列表(5)判断列表中某个元素存在个数:
name =["dayi123",34,"liu",35,3,34,3,4,5,6,7,8,9,0] if 3 in name: #如果3存在列表name中 num_of_ele = name.count(3) #判断3在列表name中的个数 print("[%s] 3 is/are in name" %num_of_ele)(6)查找列表中的元素并更改值:
name= ["dayi123",34,"liu",35,3,34,3,4,5,6,7,8,9,0] #方法一:只能更改最先查找的元素的值 if 3in name: num_of_ele = name.count(3) #判断3在列表name中存在的个数 position_of_ele = name.index(3) #获取3的下标,即3是列表中第几个元素 name[position_of_ele] = 3333 #更改下标为position_of_ele的元素值为3333 print("[%s] 3 is/are in name" %num_of_ele) print(name) #方法二:更改查找到所有元素的值 for i in range(name.count(3)): #3存在几次则循环几次 ele_index = name.index(3) #获取3的下标 name[ele_index] = 666 #更改值为666 print(name)(7)把小列表追加到大列表:
name = ["dayi123",34,"liu",35,3,34,3,4,5,6,7,8,9,0] name2 = ["nihaoa",3344,55] name.extend(name2) #扩展进来一个新的列表,将name2扩展到name中 name.reverse() #反转列表 name.sort() #排序,Python3中如果同时存在字符串会报错 print(name)(8)删除元素:name.pop() #删除最最后一个元素
name.pop(2) #删除最后一个元素(9)复制列表:
importcopy #引入copy模块 name = [34,"dayi123",["liuyi",35,3],34,3,4,5,6,7,8,9,0] #列表中还可以包含列表 name3 =name.copy() #将name列表再复制一份 name4 =copy.copy(name) #通过引入copy模块在复制一份copy模块 name5 =copy.deepcopy(name) #通过” deepcopy”深度复制一份name列表 name[1] = "Dayi123" #更改列表中第一个元素的值 name[2][2] =55555 #更改列表中包含的列表中第二个元素的值 print(name) print(name3) #列表中的列表时存在另一个内存空间中 print(name4) print(name5) #通过深度复制可以将列表中的列表复制出来 print(id(name),id(name3),id(name5)) #打印内存地址 print(id(name[2]),id(name3[2]),id(name5[2])) #通过打印内存地址可以看到copy到的列表中包含 的列表内存地址相等,deepcopy到的不相等六、元组(不可变列表)1、创建元组:
ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55))2、元组操作
r = (1,2,3,4,5,6) #只读列表,元组 #r[1] = 3 #不能修改,修改会报错 print(r)七、字典(无序)1、创建字典:
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})2、常用操作:索引、新增、删除、(键、值、键值对)、循环、长度
id_db= { #创建一个字典 456789123456789909: { 'name':"dayi123", 'age':34, 'add':"tainshui" }, 12345677890987678: { 'name':"liu", 'age':3, 'add':"gasu" }, 12345677890987678: { 'name':"liu", 'age':3, 'add':"gasu" }, } #print(id_db) #字典中的值不能重复,所以只打印一次重复值 print(id_db[12345677890987678]) #打印‘12345677890987678’中的值 id_db[12345677890987678]['name'] = "liuyi" #将’ 12345677890987678’值改为‘liuyi’ id_db[12345677890987678]['qq_of_wife'] = 110110110 #在‘12345677890987678’中新增值 print(id_db) del id_db[12345677890987678]['add'] #删除‘12345677890987678’中的‘add’ print(id_db) id_db[12345677890987678].pop("age") #删除‘12345677890987678’中的‘age’ print(id_db) v = id_db.get(12345677890987678) #读取12345677890987678中的值,赋给“v” print(v) dic2 = { 'name':'haha', 456789123456789909: { 'name':"wangwang", 'age': 24, 'addr':'china' }, } id_db.update(dic2) #根据dic2更新id_db的值 print(id_db) #更新后,没有的值会增加,都存在的会根据dic2中的更改,dic中独有的不会变 print(id_db.items()) #将字典转化为列表 print(id_db.values()) #打印value值 print(id_db.keys()) #打印key值 print(456789123456789909 in id_db) #判断列表中是否存在456789123456789909 print(id_db.setdefault(4567,"haha")) #如果字典中存在4567则打印出来,不存在,就设置为haha #把列表[1,2,34,5,6]中的值取出来当字典中的key,并赋值为"eee" print(id_db.fromkeys([1,2,34,5,6],'eee')) print(id_db.popitem()) #随机删除列表中键值 print(id_db) #循环打印字典中key,value效率低,因为要有一个dict to list的转化过程 #for k,v in id_db.items(): # print(k,v) for key in id_db: #效率高 print(key,id_db[key ])八、set(集合、无序、不重复序列)1创建集合
方法一、s1 ={11,12}
S2 = set()
方法二、set([11,12,13,14])
2操作集合
1)、创建、添加元素、清空集合
s =set() #创建空集合 s.add(123) #给集合中添加一个元素 s.add(123) #集合中元素不重复 print(s)s.clear() #清除集合中元素print(s)2)、更新操作:
s1 ={11,22,33} s2 = {22,33,44} #print(s1.difference(s2)) #s1中存在s2中不存在的打印出来 #s3 = s1.symmetric_difference(s2) #s1中不存在的,s2中都不存在的都打印出来 #print(s3) #s1.difference_update(s2) #查找s1中存在s2中不存在,将结果更新到s1中,s1中仅有仅s1中有的元素 #print(s1) s1.symmetric_difference_update(s2)#将s1中s2中非共同元素移到s1中(s1中只有s1、s2非共同元素) print(s1)3)、集合中的删除操作:
s1 = {11,22,33} #s1.remove(11) #移除一个元素,不存在没有提示 #print(s1) #ret = s1.pop() #移除一个元素,随机移除, 并获取移除元素,pop里面不能加参数 #print(ret) s1.discard(22) #如果不存在会有提示 print(s1.discard(333))4)、交集、并集操作:
s1 = {11,22,33} s2 = {22,33,44} s3 = s1.intersection(s2) #获取s1和s2的交集 print(s3) s1.intersection_update(s2) #将交集更新至s1 print(s1) s4 = s1.union(s2) #并集操作 print(s4) #li = [22,33,44,55,66] li = "dayi123" s2.update(li) #将可迭代的东西更新至s2,可以是列表,字典,字符串 print(s2)3 python2中集合的用法
a & b #求交集 a.intersection(b) a | b #求并集 a.union(b) a – b # 求差集 a.difference(b) a ^ b #求对称差集 a.symmetric_difference(b) a.issubset(b) #a 是b 的子集 a.issuperset(b) # a 是否包含b九、字符的编码与解码1、字符的编码与解码
(1)在python2默认编码是ASCII, python3里默认是unicode(2)unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),utf-16就是现在最常用的unicode版本,不过在文件里存的还是utf-8,因为utf8省空间(3)在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string2、python3的字符编码与解码
#!/usr/bin/envpython # -*-coding:utf-8 -*- #python不需要表明字符编码为utf-8,默认为utf-8 #Author:dayi123 s =" 刘毅" t =s.encode("utf-8") #将字符串解码成bytes print(t) y =t.decode("utf-8") #将bytes编码为字符串 print(y) x =s.encode('gbk') #将utf格式字符串解码为gbk格式的bytes print(x) print(x.decode('gbk')) #将gbk格式的bytes编码为utf-8格式的字符串
3、python2的字符编码与解码
#!/usr/bin/envpython #Author:dayi123 importsys print(sys.getdefaultencoding()) #显示默认的字符编码 msg ="刘毅" print(msg) #将字符串解码为unicode再编码为gbk msg_gb2312= msg.decode("utf-8").encode("gb2312") print(msg_gb2312) gb2312_to_gbk= msg_gb2312.decode("gbk").encode("gbk") print(gb2312_to_gbk)
相关文章推荐
- Python核心数据类型之字典15
- Python的数据类型--字典以及字典练习
- python圣斗士修炼(四):数据类型
- python的数据类型——列表
- Python 数据类型:集合
- python数据类型
- python 入门学习笔记之基本语法与基本数据类型
- Python基础学习----数据类型,字符串,内置数据结构
- python数据类型(python cookbook读书笔记一)
- Python基础系列----语法、数据类型、变量、编码
- python 基本数据类型之set
- Python 中的数据类型 & print 语句 & 注释&变量&字符串转义&布尔
- 2. python 运算符/数据类型
- 判断数据类型 python
- python数值数据类型
- 02_Python基本数据类型
- python数据类型与c++,java数据类型区别
- Python数据类型判断及列表脚本操作
- Python 数据类型的总结
- python基本数据类型