python全栈学习总结二:数字字符串列表元组字典重要特点及方法
Posted qilvzhuiche
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python全栈学习总结二:数字字符串列表元组字典重要特点及方法相关的知识,希望对你有一定的参考价值。
一 python中数据类型
整形:int
字符串:str
列表:list
元组:tuple
字典:dict
布尔值:bool
浮点型:float
一切皆对象,在python中,所有的数据类都是看做对象,故所有的类型名称都是类,通过类来建立对象,每个类中都有相应的方法,下面我们通过总结上面其中数据类型的特点以及常用的方法,来加深我们这些数据“类”的认识和理解。
二 各种数据类型总结
1 整形int
定义:age = 10
转换:value = int(‘158‘) 把字符串‘158’转换成整型158
value = int(‘ab‘,base = 16),以16进制转换,注意若是不加base =16则默认以十进制转换
求数字的长度:age.big_length() 使用整型自身的方法输出所占的长度
2 字符串
定义:用单引号、双引号个、三个单引号、三个双引号包括起来的各种数据
name = ‘qiluzhuiche‘
索引:print(name[0]) ---->q
切片:name[0:2] 字符串中的前两个元素
name[:-1] 字符串中的除最后一个所有元素
name[2:6:1]
迭代:for c in name:
print(c)
可以打印出字符串中的每个字符
注意:字符串一旦创建,则不可修改,一旦修改或拼接,都会重新生成字符串,字符串在内存中是连续分配的一串单元,若是对其修改,则重新开辟一片单元。原先的内存单元将被解释器释放掉。
关系运算:‘q’ in name --->True
字符串方法总结:
(1)字符转换
name = ‘qilvzhuiche is my qq‘ v = name.capitalize() #首字母大写 print(v) v = name.upper()#字符串全部大写 print(v) v = name.lower()#字符串字母全部小写 print(v) v = name.title()#字符串中的字符的首字母大写 print(v)
(2)字符判断
name = ‘qilvzhuiche is my qq‘ v = name.endswith(‘qq‘)#字符串是否以qq结尾 print(v) v = name.startswith(‘qi‘)#字符串是否以qi开头 print(v) name = ‘xiaom ing‘ v = name.isalnum()#判断字符串是否只包含字符、数字而不包含其他特殊字符 print(v) v = name.isalpha()#判断字符串是否只包含字符而不包含其他特殊字符 print(v) name = ‘2②二‘ v1 = name.isdecimal()#判断是否质保函数自发自 v2 = name.isdigit()#判断是否只包含数字,支持特殊字符② v3 = name.isnumeric()#判断是否只包含数字,支持中文数字’二‘ print(v1,v2,v3) name = ‘_li2u‘ v = name.isidentifier()#判断标识符是否定义的字母、数字、下划线组成 print(v) name = ‘Liu‘ v1 = name.islower()#判断字符是否都是小写 v2 = name.isupper()#判断字符是否都是大写 v3 = name.istitle()#判断字符首字符是否大写 print(v1,v2,v3) name = ‘liu ‘ v = name.isprintable()#判断字符串中是否存在不可显示的字符 等 print(v) name= ‘ ‘ v = name.isspace()#判断字符是否是空格 print(v)
(3)字符串格式化
两个方法format format_map
test = "I am {name},age = {age}" v = test.format(name = ‘qilvzhuiche‘,age = 30) #通过变量对应的字符来重新设置字符串,注意是重新生成的字符串 v = test.format_map({‘name‘:‘qilvzhuiche‘,‘age‘:30})#通过字典重新格式化字符串 print(v) test = "I am {0},age = {1}" v = test.format( ‘qilvzhuiche‘,30)#通过字符串中的索引重新格式化字符串 print(v)
(4)分割字符串
name = " qilvzhuiche " v1 = name.strip()#去掉字符串两边的空白字符 v2 = name.lstrip()#去掉字符串左边的空白字符 v3 = name.rstrip()#去掉字符串右边的空白字符 三个方法也可以带参数指定去掉两边的字符,默认去掉空白字符 print(v1+‘ ‘+v2+‘ ‘+v3) v1 = name.partition(‘i‘)#从左边开始以‘i‘分割字符串,返回元组的形势保存 print(v1) v2 = name.rpartition(‘i‘)#从右边开始以’i‘分割字符串,返回元组的形势保存 print(v2) name = ‘qi lv zhui che‘ v1 = name.split()#从左到右开始以‘i‘为分隔符分割,保存到列表中 print(v1) v2 = name.rsplit()#从右到左开始以’i’为分隔符分割,保存到列表中 默认以空格分割,注意比较partition的异同 print(v2) test = ‘good study upper‘ v = test.splitlines()#以换行符 进行分割 print(v)
(5)拼接字符串
""" str.join(元组、列表、字典、字符串) 之后生成的只能是字符串。 所以很多地方很多时候生成了元组、列表、字典后,可以用 join() 来转化为字符串。 """ v = ‘*‘.join("Hello") #字符串拼接 print(v) v = ‘,‘.join(‘123456789‘) print(v) print(type(v))
(6)统计功能
msg = "good good study,day day up!" num = msg.count(‘good‘) #统计某个字符串含有某个字符的个数 print(num) msg1 = ‘人生苦短,我学python!‘ num = msg1.count(‘我‘) print(num)
(7)字符串排列
msg = ‘I study python!‘ v = msg.center(30,‘*‘)#使字符串居中,剩余位置填充 v = msg.rjust(30,‘*‘) #使字符串靠右对齐,剩余位置填充* v = msg.ljust(30,‘*‘)#使字符串靠做对齐,剩余位置填充* v = msg.zfill(30)#使字符串靠右对齐,剩余位置填充0 print(v)
(8)字符串查找功能
""" find和index都是从左向右查找指定的字符串,不同之处是,若是查找不到, find返回值为-1,index则报异常 rfind和rindex则是从右向左查找,其余功能相同 """ msg = ‘人生苦短,我学python!‘ v1 = msg.find(‘苦‘) v2 = msg.index(‘我‘) print(v1) print(v2) v3 = msg.find("长") print(v3)
(9)字符替换功能
msg = "人生苦短,我学python" v = msg.replace(‘我‘,‘要‘) #在字符串中,用新字符替换旧字符 print(v) msg1 = ‘good good study,Day Day up!‘ v = msg1.replace(‘good‘,‘Good‘) # print(v) v = msg1.swapcase() #小写转换为大写,大写转换为小写 print(v)
(10)根据转换表转换字符串
""" Python translate() 方法根据 maketrans() 方法给出的字符映射转换表转换字符串中的字符。 使用 maketrans() 方法加 translate() 方法将所有元音字母转换为指定的数字,并删除指定字符: """ intab = "aeiou" outtab = "12345" deltab = "thw" trantab1 = str.maketrans(intab,outtab) # 创建字符映射转换表 trantab2 = str.maketrans(intab,outtab,deltab) #创建字符映射转换表,并删除指定字符 test = "this is string example....wow!!!" print(test.translate(trantab1)) print(test.translate(trantab2))
(11)expandtabs应用TAB打印
""" expandtabs指定转换字符串中的 tab 符号(‘ ‘)转为空格的字符数,默认的字符数是8。 """ msg = "姓名 年龄 性别" msg2 = "骑驴追车 19 男" msg3 = "若水三千 28 男" v = msg.expandtabs() print(v) v = msg2.expandtabs() print(v) v = msg3.expandtabs() print(v)
(12)字符串编码和解码
""" encode() 方法以指定的编码格式编码字符串,默认编码为 ‘utf-8‘。 bytes decode() 方法以指定的编码格式解码 bytes 对象,默认编码为 ‘utf-8‘。 """ #!/usr/bin/python3 S = "人生苦短,我学python"; S_utf8 = S.encode("UTF-8") S_gbk = S.encode("GBK") print(S) print("UTF-8 编码:", S_utf8) print("GBK 编码:", S_gbk) print("UTF-8 解码:", S_utf8.decode(‘UTF-8‘,‘strict‘)) print("GBK 解码:", S_gbk.decode(‘GBK‘,‘strict‘))
3 列表list总结
定义:ages = [18,23,27,19,21] #用[]表示列表,列表中的各个元素用逗号隔开,元素可以是数字、字符串、布尔值、列表、字典等
索引:列表具有索引功能,可以通过索引取值,ages[1]--->23
切片:列表可以通过切片取值功能,age[1:3]--->23,27
迭代:可以通过for循环取出所有的值,具有遍历功能。
3.1列表的增删改查:
增:names =[]
names.append(‘qilvzhuiche‘)#通过列表方法append来增加列表元素
names.insert(0,‘ruoshuisanqian‘)通过列表方法在指定位置增加元素
names.entend([‘yingzaidasi‘,‘yangfanqihang‘,‘zailushang‘])#增加多个元素,注意与append的区别,append当成一个元素添加,extend相当于把两个列表合并
删:
del names[2] #通过del删除指定位置元素
names.pop()#删除最后一个元素,自动弹出,返回值为弹出的元素
names.pop(2)#删除指定位置元素,返回值为删除的元素
names.remove(‘yangfanqihang‘)#移除指定名称的元素
改:
names[1] = ‘weinidengdai‘ #修改指定位置的元素
查:
‘zailushang’ in names #判断值是否在列表中
‘weinidengdai‘ not in names #判断值是否不在列表中
names.count(‘zailushang‘)#通过查询列表元素出现的次数,判断是否存在
name.index(‘zailushang‘,0,len(names))#通过查询列表出现的位置判断元素是否存在
names = [] #增 names.append(‘qilvzhuiche‘) names.insert(0,‘ruoshuisanqian‘) name2 = [‘yingzaidasi‘,‘yangfangqihang‘,‘zailushang‘] names.extend(name2) print(names) #s删 names.pop() names.pop(0) del names[0] names.remove(‘yingzaidasi‘) print(names) #改 names[0] = ‘zailushang‘ print(names) #查 v = ‘zailushang‘ in names print(v) v = ‘yangfanqishang‘ not in names print(v) v = names.count(‘zailushang‘) print(v) v = names.index(‘yangfanqihang‘)#当所查找元素不存在是,会引起异常 print(v)
3.2列表的排序
ages = [23,24,19,27,21,31] v = ages.sort() #sort方法直接对列表进行排序,没有返回值 print(v) print(ages) ages = [23,24,19,27,21,31] v = sorted(ages) #sorted函数对列表重新排序后以返回值输出, print(v) print(ages) ages = [23,24,19,27,21,31] v = ages.sort(reverse=True) #sort方法直接对列表进行排序,reverse=True时,默认倒序排列 print(v) print(ages) ages = [23,24,19,27,21,31] v = ages.reverse() #reverse方法是通过从大到小排列列表,无返回值,直接对列表操作。 print(v) print(ages)
3.3 列表常用其他方法
names.clear() #对列表进行清空
names.copy()#对列表进行软拷贝
len(names)#求列表的长度
4 元组tuple总结
定义:gender = (‘man‘,‘woman‘,‘none‘) #元组用小括号定义,中间用逗号隔开,至少要含有一个逗号,表示元组.
特点:元组的元素不可以被修改,增加、删除等,只能整体修改。元组的一级元素不可修改。
访问:可以索引访问,也可以切片访问。
迭代:可以for循环遍历
方法:count()#统计 index:查询元素位置
5 字典dict总结
定义:infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18},字典用大括号来包含元素,还有键值对
特点:(1)字典的值value可以是任何值
(2)字典的键key可以是:数字int、字符串str、布尔值bool、元组tuple。
(3)字典是无序的
(4)字典可以迭代,用for循环遍历
(5)字典支持通过键来索引查找
5.1字典的增删改查:
infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18,‘job‘:‘computer‘} #增 infor[‘hobby‘] = ‘play‘ #删 del infor[‘sex‘] v = infor.pop(‘hobby‘) print(v) #改 infor[‘age‘] = 19 #查 v= infor.get(‘age‘) print(infor) print(v)
5.2字典的循环遍历(迭代)
infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18,‘job‘:‘computer‘} for key,value in infor.items(): print("键:%s 值:%s"%(key,value)) for key in infor.keys(): print("键:%s"%key) for value in infor.values(): print("值:%s"%value)
5.3 字典的其它方法
infor = {‘name‘:‘qilvzhuiche‘,‘sex‘:‘man‘,‘age‘:18,‘job‘:‘computer‘} info1 = infor.copy()#字典拷贝 del infor[‘sex‘] print(infor) print(info1) v = infor.popitem() #随机删除一个键值对 print(v) v = infor.clear() #清空字典 print(v) print(infor) infor.setdefault(‘hobby‘,‘paly‘)#设置键值对,默认为None infor.update({‘name‘:‘ruoshuisanqian‘,‘gender‘:‘man‘,‘age‘:‘28‘}) print(infor) seq = (‘Google‘, ‘Runoob‘, ‘Taobao‘) dict1 = dict.fromkeys(seq) #字典的静态方法运用 print("新字典为 : %s" % str(dict1)) dict = dict.fromkeys(seq, 10) print ("新字典为 : %s" % str(dict1))
6 集合set总结
定义:s = {1,3,6,8,9}
特点:不同元素、无序、不可变类型、可哈希的值
迭代:可以for循环遍历
判断元素是否属于集合的方法?in,not in
通过创建、转换集合可以去除重复的元素!在这方面有重要的应用!
6.1集合的基本方法
#set
s = {1,2,3,4,5,6,7,9}
s.add(0) #添加元素
s.add(10)
s1 = s.copy()
#s.clear()
s.pop()
s.remove(5)
print(s)
print(type(s))
print(s1)
s.discard(12) #移除没有的元素 不会报错
#s.remove(11) #移除没有的元素,就报错
6.2 集合的重要方法
s1 = {1,2,3,4,5,6} s2 = {5,6,7,8,9} #求交集 v1 = s1.intersection(s2) v2 = s1 & s2 #求并集 v1 = s1.union(s2) v2 = s1 | s2 #求差集 v1 = s1.difference(s2) v2 = s1 - s2 #求交叉补集 去掉两个集合公共部分的合集 v1 = s1.symmetric_difference(s2) v2 = s1 ^ s2 #集合更新 v1 = s1.update(s2) v2 = s2.update(s1) print(v1,v2) #update方法,直接更新原集合,没有返回值 print(s1,s2) """ //更新原先集合 s1.difference_update() s1.intersection_update() s1.symmetric_difference_update() """ #求是否是子集 s3 = {5,6} v = s1.isdisjoint(s2) #求是否有交集 没有返回True 有返回False v = s3.issubset(s1) #s3是否S1的子集? v2 = s3 <= s1 v = s2.issuperset(s3) #s2是否S3的父集? v2 = s1>= s3 print(v,v2)
以上是关于python全栈学习总结二:数字字符串列表元组字典重要特点及方法的主要内容,如果未能解决你的问题,请参考以下文章
Python3学习笔记--数据类型:字符串列表元组数字字典集合