查看: 155|回复: 0

1.python数据类型详解

[复制链接]
发表于 2020-2-19 17:37:27 | 显示全部楼层 |阅读模式
python数据范例分类

1).数值型:整数型(int)、浮点型(float)、布尔型(bool 取值:True、false)
2).容器范例: 字符串型(str)、列表(list)、元祖(tuple)、字典(dict)、集合(set)  
3).自定义范例:Person、Animal、Dog、Cat、Student...
4).NoneType:None (明白:不存在、未明白的、未知的)
一. 字符串范例(str)

特点:属于容器范例之一,满足有序的(有索引)、可重复的、不可变的数据范例(不可变:指字符串中某个位置的元素不答应改变,但是可以将整个字符串变量中的地点进行改变(意味着将字符串完全覆盖掉))
1.自定义打印效果的显示
使用:""" ... """ 或者 ''' ... ''' 来定义字符串数据,对于有些环境下,需要对定义的字符数据进行显示样式的把控,可以使用如下的方式定义字符串数据,可以做到换行的效果
  1. 1 content = """遥想公瑾当年,小乔出嫁了!2          雄姿英发,羽扇纶巾,3          谈笑间,樯橹灰飞烟灭"""4 content1 = '''遥想公瑾当年,小乔出嫁了!5           雄姿英发,羽扇纶巾,6           谈笑间,樯橹灰飞烟灭'''7 print(content) 8 print(content1)  
复制代码
2.转义字符
转义字符:将字符原本的含义去除,赋予一个新的含义
常见的转义字符如下:
\n: 换行符
\t: 制表符
\b: 退格
\”: 双引号
\': 单引号
如果字符串形貌的是一串物理地点,在其中可能会包含一些转义字符,那么对于我们路径的解析会造成错误,以是我们需要在字符串第一个引号的前面显示的追加一个r,目的:就是为了避免转义
  1. 1 address = "d:\\basic\\tpython1809\\day02\\note.txt"2 address = r"d:\basic\tpython1809\day02\note.txt"3 print(address)
复制代码
3.字符串的*+操作
字符串数据和字符串数据之间可以做拼接操作,使用+号来实现
字符串数据和整数之间使用*号毗连,作用:让字符串数据重复执行多次
4.字符串的索引
起始索引:0
结束索引:-1 /length - 1
5.内置函数len()的作用
例如:len(obj)--> 得到容器对象obj的长度/尺寸/容量
6.怎样访问字符串元素
1).获取元素:
通过变量名配合下标来实现
2).设置元素:
由于字符串属于不可变的数据范例,以是没有设置元素这一说
7.常见的运行时非常:IndexError
以下代码有题目:由于str1的长度为10,以是它的最大索引为9,
导致代码出现IndexError范例的非常,缘故原由是下标越界了,这种环境是需要避免的
8.字符串的切片操作
目的:从原串中得到部门子串数据,最终原串不会发生改变
格式:字符串变量[[start]:[end]:[step]]【注意】:内部的中括号表示可选的意思
参数表明:start:起始位置;end:结束位置;step:步长(默以为1),满足含头不含尾的特点(99%的环境) [start,end)
9.占位符
在定义字符串数据时,可能在某些位置并不清楚需要填入什么内容,那么就先将位置占了,等到之后确定了数据再填入进去
1).百分号原则:
符号:
%d:整数占位符
%f:小数占位符
%s:万能占位符
2).大括号原则:
需要配合str类中的format()来使用得到效果
  1. 1 name = "jerry" 2 age = 18 3 height = 185.5 4   5 print("姓名:%s,年龄:%d,身高:%.1fcm" %("韩梅梅",21,163.5)) 6 print("姓名:%s,年龄:%010d,身高:%010.1fcm" %(name,age,height)) 7  8 print("最喜欢的歌手:{},最喜欢看的电影:{},最喜欢玩的游戏:{},最喜欢的编程语言:{}".format("张学友","海王","魔兽世界","python")) 9 print("最喜欢的歌手:{3},最喜欢看的电影:{1},最喜欢玩的游戏:{2},最喜欢的编程语言:{0}".format("java","蜘蛛侠","LOL","周杰伦"))10 print("最喜欢的老师:{teacher},最喜欢看的电影:{film},最喜欢玩的游戏:{game},最喜欢的编程语言:{language}".format(language="js",11        teacher="微微姐",film="小电影",game="超级玛丽"))
复制代码
10.字符串中常用的函数
1). ‘sep‘.join(seq) :sep分隔符,可以为空;seq毗连的元素序列、字符串、元组、字典
    【补充】os.path.join(): 将多个路径组合后返回
2). ljust(width,format):将str数据显示在左侧,如果长度/尺寸不满width,那么右侧补format
3). rjust(width,format):将str数据显示在右侧,如果长度/尺寸不满width,那么左侧补format
4). center(width,format):将str数据显示在中心,如果长度/尺寸不满width,那么左右侧补format
5). zfill(width):将str数据显示在右侧,如果长度/尺寸不满width,那么左侧补0
6). strip(): 去除字符串左、右两侧匹配到的字符数据,返回一个新串
7). lstrip():去除字符串左侧匹配到的字符数据,返回一个新串
8). rstrip():去除字符串右侧匹配到的字符数据,返回一个新串
9). replace(old,new,[number]):将str中的old内容替换为new,默认全部替换;也可以选择性的替换number次
10). split(format):将str以format格式进行切割,返回一个列表对象;默认空参数的split()可以切割的内容:' '、\n、\t
11). index(s):返回字符串s在原串中对应的下标/索引,若存在多个相同数据,返回第一个匹配乐成的,如果都没有匹配乐成,会报错
12). count(s):返回字符串s在原串中出现的次数,如果一次都没有出现,不会报错,返回0
13). find(format):查找字符串中首次出现的format的位置
14). rfind(format):查找字符串中最后一次出现的format的位置
15). upper():将字符串数据变为全大写
16).lower():将字符串数据变为全小写
17).capitalize():将字符串数据首字母大写,别的字母小写
18). title():将字符串数据首字母大写,别的字母小写  备注:如果存在多个单词,每个单词首字母都要考虑
19). swapcase():将字符串中大写变为小写,小写变为大写
20). startswith(format):判定字符串是否以format开头,函数效果是布尔值
21). endswith():判定字符串是否以format结尾,函数效果是布尔值
22). ISAlnum():判定字符串的内容是否都是英文、数字字符;如果是,返回True;反之,返回False
23). isalpha():判定字符串的内容是否都是英笔墨符;如果是,返回True;反之,返回False
24). isdecimal():判定字符串的内容是否都是数字字符;如果是,返回True;反之,返回False
25). isdigit():判定字符串的内容是否都是数字字符;如果是,返回True;反之,返回False
26). islower():判定字符串中英笔墨符是否全小写;如果是,返回True;反之,返回False   【注意】数字、其它字符不影响
27). isupper():判定字符串中英笔墨符是否全大写;如果是,返回True;反之,返回False   【注意】数字、其它字符不影响
28). istitle():判定字符串内容中的英文子串(多组)的首字母是否大写
  1. 1 lt = ['i','love','you','very','much'] 2 print('-'.join(lt)) 3 print(str.join('#',lt)) 4  5 str1 = 'i love you very much'         6 print(str1.ljust(50,'*'))              #i love you very much****************************** 7 print(str1.rjust(50,'-'))              #------------------------------i love you very much 8 print(str.rjust(str1,50,'$'))          #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$i love you very much 9 print(str1.center(50,'^'))             #^^^^^^^^^^^^^^^i love you very much^^^^^^^^^^^^^^^10 print(str1.zfill(50))                  #000000000000000000000000000000i love you very much11 12 str1 = '  ,,,..\    i hate you very much   ...,,;;\  '13 print(str1.lstrip('\ ,.'))           #i hate you very much   ...,,;;\  14 print(str1.rstrip('\;., '))          #,,,..\    i hate you very much15 print(str1.strip(',\;. '))           #i hate you very much16 17 str1 = "python啊python,你是我的骄傲!python啊python,我为你自豪!"18 print(str1.replace('python','java'))            #java啊java,你是我的骄傲!java啊java,我为你自豪!19 print(str1.replace('python','java',2))          #java啊java,你是我的骄傲!python啊python,我为你自豪!20 21 str1 = 'i love\nabc you\t very\n much'22 print(str1.split(' '))          #['i', 'love\nabc', 'you\t', 'very\n', 'much']23 print(str1.split())             #['i', 'love', 'abc', 'you', 'very', 'much']24 print(str1.split('\n'))         #['i love', 'abc you\t very', ' much']25 print(str1.splitlines())        #['i love', 'abc you\t very', ' much']26 27 str1 = 'abcdefgd1234567'28 print(str1.index('d'))     #329 print(str1.index('efg'))   #430 print(str1.index('xyz'))   #报错31 32 str1 = 'dsaalkfaaasdfaaaa2141aaaaaaxyz'33 print(str1.count('a'))     #1534 print(str1.count('aa'))    #735 print(str1.count('www'))   #036 37 str1 = '山不在在高,有仙则灵;水不在在深,有龙则灵;斯是在在陋室,惟吾德馨'38 print(str1.find('在在'))        #239 print(str1.rfind('在在'))       #2440 41 str1 = 'today is thursday PM'42 print(str1.upper())          #TODAY IS THURSDAY PM43 print(str1.lower())          #today is thursday pm44 print(str1.capitalize())     #Today is thursday pm45 print(str1.title())          #Today Is Thursday Pm46 print(str1.swapcase())       #TODAY IS THURSDAY pm47 48 str1 = 'hahaha abcdefghijk 32141234 hehehe'49 print(str1.startswith('h'))         #True50 print(str1.startswith('ha'))        #True51 print(str1.startswith('haha'))      #True52 print(str1.startswith('Haha'))      #False53 print(str1.startswith('hahha'))     #False54 55 print(str1.endswith('e'))           #True56 print(str1.endswith('he'))          #True57 print(str1.endswith('ehe'))         #True58 print(str1.endswith('Hehe'))        #False59 60 str1 = '3214Love&Tdsajflks*^'61 print(str1.isalnum())          #False62 print(str1.isalpha())          #False63 print(str1.isdigit())          #False64 print(str1.isdecimal())        #False65 print(str1.islower())          #False66 print(str1.isupper())          #False67 print(str1.istitle())          #Ture
复制代码
二. 列表范例(list)

特点:有序的(有索引、定义和显示的次序是一致的)、可变的(既可以改变元素的内容也可以自动(扩缩)容)、可重复的、可以存储任何数据范例的元素
1.怎样访问列表中的元素
1).获取元素
列表名配合下标获取 --> 例如:lt[0],lt[-1]
2).设置元素(和str有区别)
列表名配合下标 = ... --> 例如:lt[4] = "武大郎"
2.列表的+*操作
对于+操作而言:将两个列表对象中的元素都组合起来以一个新的列表返回
对于*操作而言:将列表中的元素重复出现n次,以新的列表返回
3.和列表有关的一些函数
append(obj):将obj元素追加到列表的末尾
clear():清空列表,元素没了,列表对象还在 : lt.clear()
4.del关键字配合列表对象/元素使用
目的:接纳列表对象,而且接纳其中的元素内容(即可以接纳列表对象,也可以接纳列表元素):del lt
del可以删除列表中指定位置的元素:del lt[1]
5.列表的切片操作
格式和特点和str一模一样...
  1. 1 lt6 = ['葫芦娃','黑猫警长','熊出没','灌篮高手','柯南','海尔兄弟']2 lt7 = lt6[1:5]3 print(lt7,type(lt7))4 print(lt6,type(lt6))5 print(lt6[2:-2])6 print(lt6[:])7 print(lt6[::-1])
复制代码
6.归纳总结列表的定义格式
格式一:列表名 = [值1,值2,...,值n]
格式二:列表名 = [变量1,变量2,...,变量n] = [值1,值2,...,值n]
格式三:列表名 = []
7. list中常用的函数
1). append(obj):将obj存入到列表的最后一个位置
2). extend(iterable)将iterable对象中的每个元素分别取出存入到列表的最后位置
3).index(obj):返回obj在列表中出现的索引位置;如果存在多个相同的obj元素,返回的是第一次出现的那个元素的索引;如果一个有没有,直接报错
4). count(obj):返回obj在列表中出现的次数;如果一次都没有出现,返回0
5). pop([index]):如果是空参数的pop(),将列表最后一个元素弹出(作为返回值给步伐);如果有参数,必须是索引值,将详细索引位置上的元素弹出
6). remove(element):删除和element匹配的某个元素,没有返回值;如果有多个匹配的,只删除第一个
7). reverse():反转列表元素
8). sort([reverse=True],[key=...]):默认以升序排列(reverse=False),如果想要降序排列,显示定义reverse=True
  1. 1 lt = ['路飞','索罗','山治','娜美','乌索普','乔巴','布鲁克'] 2 lt.append('香克斯') 3 print(lt)   # ['路飞','索罗','山治','娜美','乌索普','乔巴','布鲁克','香克斯'] 4 lt.append(['卡卡西','鸣人','佐助','樱']) 5 print(lt)   # ['路飞','索罗','山治','娜美','乌索普','乔巴','布鲁克','香克斯',['卡卡西','鸣人','佐助','樱']] 6  7 lt = ['路飞','索罗','山治','娜美'] 8 lt.extend(['卡卡西','鸣人','佐助','樱'])      # ['路飞', '索罗', '山治', '娜美','卡卡西', '鸣人', '佐助', '樱'] 9 lt.extend('大蛇丸')10 print(lt)            # ['路飞', '索罗', '山治', '娜美', '卡卡西', '鸣人', '佐助', '樱', '大', '蛇', '丸']11 lt.extend(200)       # TypeError: 'int' object is not iterable12 13 lt = ['路飞','索罗','山治','娜美','乌索普','乔巴','布鲁克','娜美']14 print(lt.index('娜美'))       # 315 # print(lt.index('娜美1'))    # 报错ValueError16 17 print(lt.count('路飞'))       #118 print(lt.count('娜美'))       #219 print(lt.count('娜美1'))      #020 21 print(lt.pop())      #娜美22 print(lt)            #['路飞','索罗','山治','娜美','乌索普','乔巴','布鲁克']23 print(lt.pop(1))     # 索罗24 print(lt)            #['路飞', '山治', '娜美', '乌索普', '乔巴', '布鲁克']25 # lt.pop('乔巴')    # 报错 非法操作26 27 lt = ['路飞','索罗','山治','娜美','乌索普','乔巴','布鲁克','娜美']28 print(lt.remove('山治'))  # None29 print(lt)    #['路飞','索罗','娜美','乌索普','乔巴','布鲁克','娜美']30 lt.remove('娜美')31 print(lt)    #['路飞','索罗','乌索普','乔巴','布鲁克','娜美']32 33 print(lt.clear())   #None34 print(lt)      #[]35 36 lt = ['路飞','索罗','山治','娜美','乌索普','乔巴','布鲁克','娜美']37 lt.reverse()38 print(lt)       #得到['娜美','布鲁克','乔巴','乌索普','娜美','山治','索罗','路飞']39 40 lt1 = [53,23,-17,9,-21,0,79,88,-30]41 lt1.sort()42 print(lt1)    #[-30, -21, -17, 0, 9, 23, 53, 79, 88]43 lt1.sort(reverse=True)44 print(lt1)    #[88, 79, 53, 23, 9, 0, -17, -21, -30]
复制代码
三. 元祖范例(tuple)

特点:有序的(有索引、定义和显示的次序是一致的)、不可变的(和str一样明白)、可重复的、可以存储任何数据范例的元素
1.怎样访问元祖中的元素
1).获取元素
元祖名配合下标获取 -->例如:tp[0],tp[-1]
2).设置元素(和str保持一致)
没有此操作,黑白法的,缘故原由元祖是不可变的数据范例
2.元祖的+*操作
对于+操作而言:将两个元祖对象中的元素都组合起来以一个新的元祖返回
对于*操作而言:将元祖中的元素重复出现n次,以新的元祖返回
注意事项】元祖有没有类似于列表的append或者clear函数,因为append和clear这类函数改变的都是容器对象内部的元素内容,这和不可变所辩说
3.del关键字配合元祖对象使用
目的:接纳整个元祖对象,但是对于tuple范例而言无法接纳其任何一个元素
4.元祖的切片操作
格式和特点和str一模一样...
5.归纳总结元祖的定义格式
格式一:元祖名 = (值1,值2,...,值n)
格式二:元祖名 = (变量1,变量2,...,变量n) = (值1,值2,...,值n)
格式三:元祖名 = ()
格式四:元祖名 = (值1,) 【注意】:定义元祖而且只有一个元素,必须在元素后显示的加上一个逗号
四. 字典范例(dict)

特点:无序性(没有索引,通过键找值)、可变的数据范例(值可变、键不可变);字典的布局是键值对组合 --> key-value对象;键(key):唯一性(不可重复)、不可变的数据范例(例如:list就不能作为键);值(value):没有任何要求,可以是任何范例的数据,乃至可以重复
1.怎样访问字典元素
1).获取值:字典名配合键名可以得到对应的值
  1. 1 dic1 = {"name":"韩梅梅","age":23,"height":165.0}2 dic1['name']           # 韩梅梅
复制代码
2).设置值:字典名配合键名 = ...
【注意事项】1.在定义字典对象的时间如果出现了重复的键,生存键名的同时,将后者的值覆盖前面的值。2.在添加新的键值对的过程中,如果原字典对象中没有此键,那么就将其键值对一并加入进去,称为一个元素。
  1. 1 dic2 = {"name":"韩梅梅","age":23,"height":165.0,"name":"李雷"}2 dic2['weight'] = 1203 print(dic2)
复制代码
2.字典相关函数
clear():清空字典元素,生存空字典对象,dic2.clear( )
3.和关键字del配合使用
目的:接纳键值对组合,或者整个字典对象;del dic2['age']    # 删除年龄键值对;del dic2    # 删除全部(数据和整个字典布局)
4.通过键查找值的环境
方式一:字典名[键名] 如果键不存在,报错;出现KeyError范例的非常;dic2["name1"]
方式二:字典名.get(键名) 如果键不存在,不会报错,会返回给步伐一个None值;此方式比较安全/友好(更加好用);dic2.get("name1")
【注意事项】:必须满足不可变的数据范例;枚举:int、float、bool、str、None等都可以充当键,满足唯一性(不可重复);:没有要求,任何范例都可以,乃至可重复。
5.dict中常用的函数
1). dic1.update(dic2):将dic2中每一个键值对和dic1中的进行比较,如果dic1中经过存在相同的 键,那么就保证键不变,值被覆盖;如果dic1中没有相应的键值对,那么就将其加入进dic1中
items():返回一个dict_items范例的对象,内部封装了一个一个元祖充当其元素,元祖中包含键和值两块内容
keys():返回一个dict_keys范例的对象,内部封装了键集
values():返回一个dict_values范例的对象,内部封装了值集
popitem():弹出最后一个键值对,以元祖的情势返回
pop(key):传入key时,弹出整个键值对,最终返回给步伐value
copy():拷贝 ;dict1.copy()
  1. 1 dic1 = {"name":"张三丰","age":120,"height":168.0} 2 dic2 = {"name":"金毛狮","weight":100,"faceValue":False,"girlFriend":"灭绝师太"} 3 dic1.update(dic2) 4 print(dic1)     #得到{'name': '金毛狮王', 'age': 120, 'height': 168.0, 'weight': 100, 'faceValue': False, 'girlFriend': '灭绝师太'} 5 print(dic2)     #得到{'name': '金毛狮王', 'weight': 100, 'faceValue': False, 'girlFriend': '灭绝师太'} 6  7 dic1 = {"name":"张三丰","age":120,"height":168.0} 8 print(dic1.items(),type(dic1.items()))     #得到dict_items([('name', '张三丰'), ('age', 120), ('height', 168.0)])  9 print(dic1.keys(),type(dic1.keys()))       #得到dict_keys(['name', 'age', 'height']) 10 print(dic1.values(),type(dic1.values()))   #得到dict_values(['张三丰', 120, 168.0]) 11 12 dic2 = {"name":"金毛狮","weight":100,"faceValue":False,"girlFriend":"灭绝师太"}13 print(dic2.popitem())          #('girlFriend', '灭绝师太')14 print(dic2)                    #{'name': '金毛狮王', 'weight': 100, 'faceValue': False}15 print(dic2.pop('weight'))      #10016 print(dic2)                    #{'name': '金毛狮王', 'faceValue': False}       17 18 dic3 = dic2.copy()     # id改变19 print(dic2,id(dic2))   #得到{'name': '金毛狮王', 'weight': 100, 'faceValue': False, 'girlFriend': '灭绝师太'} 599928020 print(dic3,id(dic3))   #得到{'name': '金毛狮王', 'weight': 100, 'faceValue': False, 'girlFriend': '灭绝师太'} 5999352
复制代码
五. 集合范例(set)
特点:无序性(没有索引,每一次显示的效果都不一样)、唯一性(不可重复)、可变的、只能存放不可变的数据。使用场景:在实际开发过程中,经常用于对数据进行去重(过滤)
1.集合的一些常用操作如下
以下的操作都是在两个集合对象中使用
符号:
&:取交集
|:取并集
-:取差集(对于取差集的操作,需要关注的是谁在-号的前面(左侧),返回的就是谁独有的数据)
^:先取并集再舍弃交集部门
【注意事项】对于集合和集合之间没有+操作。会出现TypeError范例的错误
2.集合相关的函数
clear():清空集合,生存外壳
3.和关键字del配合使用
目的:回网络合元素,或者接纳整个集合对象
  1. 1 s1 = {"貂蝉","西施","王昭君","玉环"}2 s1.clear()3 print(s1)      # set()4 del s15 print(s1)      # 直接全删了,什么都不剩,以是报错NameError:name's1'is not defined
复制代码
思考:删除"貂蝉"这个数据,该怎么做到?
1).可以使用remove(obj)函数来实现;2).先将集合转换为列表 --> 使用转换函数list() , 再使用循环的思想,来处置惩罚列表对象,一旦匹配上了"貂蝉",就可以使用del关键字进行数据删除的行为
  1. 1 # 方法1 2 s1.remove("貂蝉") 3  4 # 方法2 5 lt = list(s1)   # 将集合转换为列表 6 i = 0 7 while i < len(lt): 8     if lt[i] == "貂蝉": 9         print(lt[i])10         del lt[i]11     i += 112 print(lt)
复制代码
4.定义一个空集合
s1 = set( )
5. set中常用的函数
1). add(e):添加一个元素e(不可变的数据范例)到集合中
2). pop(): 只能是空参的(集合没有索引的概念),随机从集合中弹出一个元素
3). remove(e):从集合中删除和e匹配的元素
4).clear():清空集合,生存容器
5).copy(): 拷贝
6).issubset(s):判定一个集合是否是另一个集合的子集;s1.issubset(s2) >>> s1是否是s2的子集
7). issuperset(s):判定一个集合是否是另一个集合的父集;s1.issubset(s2) >>> s1是否是s2的父集
8). isdisjoint(s):判定两个集合之间是否存在交集,如果存在,返回False;反之,返回True
  1. 1 s1 = {10,100,3.14,"abcd"} 2 s2 = {3.141,100} 3 s1.add('hello') 4 print(s1.pop()) 5 s1.remove(100) 6 s1.clear() 7 print(s1)     #set() 8 print(s1.issubset(s2))    #False 9 print(s1.issuperset(s2))  #True10 print(s1.isdisjoint(s2))  #False11 print(s2.isdisjoint(s1))  #False
复制代码

天涯海角也要找到Ni:1.python数据类型详解

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表