字符串、列表、元组、字典、集合-内置方法
一、字符串类型
1.定义
msg='hello' # msg=str('msg'),此时为字符串类型
2.类型转换
str可以把任意其他类型都转成字符串 # res=str({'a':1}) 此时就把字典转为字符串了
3.内置方法一
3.1 按索引取值(正向取+反向取)
msg = 'hello world' #正向取 print(msg[0]) print(msg[5]) #反向取 print(msg[-1]) #此时结果为:h 空 d ,一个字母占一个索引位置,空格也是
3.2 切片:切片:索引的拓展应用,从一个大字符串中拷贝出一个子字符串
msg = 'hello world' # 顾头不顾尾 res=msg[0:5] #x print(res) print(msg) # 步长 res=msg[0:5:2] # 0 2 4 print(res) # hlo # 反向步长 res=msg[5:0:-1] print(res) #" olle" msg = 'hello world' res=msg[:] # res=msg[0:11] print(res) res=msg[::-1] # 把字符串倒过来 print(res)
3.3 长度:len()
msg='hello world' print(len(msg))
3.4 成员运算in和not in
# 判断一个子字符串是否存在于一个大字符串中print("alex" in "alex is sb") print("alex" not in "alex is sb")
3.5 移除字符串左右两侧的符号strip,默认去掉的空格
msg=' aaa ' res=msg.strip() print(msg) # 不会改变原值 print(res) # 是产生了新值
# 默认去掉的空格
msg='****aaa****'
print(msg.strip('*')) #aaa
# 了解:strip只取两边,不去中间
msg='****e*****gon****'
print(msg.strip('*')) # e*****gon
msg='**/*=-**aaa**-=()**'
print(msg.strip('*/-=()')) #aaa
3.5.1 实际应用
#应用:防止用户输入不规范 inp_user=input('your name>>: ').strip() # inp_user=" egon" inp_pwd=input('your password>>: ').strip() if inp_user == 'egon' and inp_pwd == '123': print('登录成功') else: print('账号密码错误')
3.6:切分split:把一个字符串按照某种分隔符进行切分,得到一个列表
# # 默认分隔符是空格 info='aaa 18 male' res=info.split() print(res) #['aaa', '18', 'male'] # # 指定分隔符 info='aaa:18:male' res=info.split(':') print(res) #['aaa', '18', 'male'] # 指定分隔次数 info='aaa:18:male' res=info.split(':',1) print(res) #['aaa', '18:male']
3.7 循环
info='egon:18:male' for x in info: print(x) #每个字母包括符号都打印
4.内置方法二
# strip,lstrip,rstrip msg='***egon****' print(msg.strip('*')) #egon print(msg.lstrip('*')) #egon**** 去除左边的 print(msg.rstrip('*')) #***egon 去除右边的 # lower,upper #转为大小写 msg='AbbbCCCC' print(msg.lower()) print(msg.upper()) # startswith,endswith print("alex is sb".startswith("alex")) print("alex is sb".endswith('sb')) # format格式化 #split,rsplit:将字符串切成列表 info="egon:18:male" print(info.split(':',1)) # ["egon","18:male"] print(info.rsplit(':',1)) # ["egon:18","male"] #join: 把列表拼接成字符串 l=['egon', '18', 'male'] res=l[0]+":"+l[1]+":"+l[2] #res=":".join(l) # 按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串 print(res) # replace 替换 msg="you can you up no can no bb" print(msg.replace("you","YOU",)) print(msg.replace("you","YOU",1)) #只替换第一个 #isdigit # 判断字符串是否由纯数字组成,num1=b'4'#bytesnum2=u'4'#unicode,python3中无需加u就是unicodenum3='四'#中文数字num4='Ⅳ'#罗马数字,此时只能识别num1,num2print('123'.isdigit()) #True
#isnumberic 可以识别num2,num3,num4
#isdecimal只能识别:num2
print('12.3'.isdigit()) #False #综合应用 age=input('请输入你的年龄:').strip() if age.isdigit(): age=int(age) # int("abbab") if age > 18: print('大了') elif age < 18: print('小了') else: print('对了') else: print('必须输入数字')
5.内置方法其他
# find,rfind,index,rindex,count msg = 'hello egon hahaha' # 找到返回起始索引 # print(msg.find('e')) # 返回要查找的字符串在大字符串中的起始索引 # print(msg.find('egon')) # print(msg.index('e')) # print(msg.index('egon')) # 找不到 # print(msg.find('xxx')) # 返回-1,代表找不到 # print(msg.index('xxx')) # 抛出异常 # msg='hello egon hahaha egon、 egon' # print(msg.count('egon')) #计数 # center,ljust,rjust,zfill print('egon'.center(50,'*')) #居中***********************egon*********************** print('egon'.ljust(50,'*')) # egon********************************************** print('egon'.rjust(50,'*')) # **********************************************egon print('egon'.zfill(10)) # 000000egon #expandtabs msg='hello\tworld' print(msg.expandtabs(2)) # 设置制表符代表的空格数为2 hello world # captalize,swapcase,title print("hello world egon".capitalize()) #Hello world egon 第一个首字母大写 print("Hello WorLd EGon".swapcase()) #hELLO wORlD egON 大小写互换 print("hello world egon".title()) #Hello World Egon 全部首字母大写 # is数字系列 # is其他 # print('abc'.islower()) # print('ABC'.isupper()) # print('Hello World'.istitle()) # print('123123aadsf'.isalnum()) # 字符串由字母或数字组成结果为True # print('ad'.isalpha()) # 字符串由由字母组成结果为True # print(' '.isspace()) # 字符串由空格组成结果为True # print('print'.isidentifier()) # print('age_of_egon'.isidentifier()) # print('1age_of_egon'.isidentifier())
二、列表类型
1.定义
l=[1,1.2,'a'] # l=list([1,1.2,'a'])
2.类型转换
但凡能够被for循环遍历的类型都可以当做参数传给list()转成列表
3.内置方法:索引、切片、长度、成员运算等与字符串一样
3.1 向列表中添加值
# 追加 l=[111,'egon','hello'] l.append(3333) l.append(4444) print(l) #[111, 'egon', 'hello', 3333, 4444]依次添加在后面 # 插入值 l=[111,'egon','hello'] l.insert(0,'alex') print(l) #根据索引插入 #添加列表 #new_l=[1,2,3] # l=[111,'egon','hello'] # l.append(new_l) # print(l) # 代码实现 # new_l=[1,2,3] # for item in new_l: # l.append(item) # print(l) #['alex', 111, 'egon', 'hello', 1, 2, 3] # extend实现了上述代码 new_l=[1,2,3] l.extend(new_l) l.extend('abc') print(l) #['alex', 111, 'egon', 'hello', 1, 2, 3, 'a', 'b', 'c'],extend拆开一个一个加进去
3.2删除
# 方式一:通用的删除方法,只是单纯的删除、没有返回值 # l = [111, 'egon', 'hello'] # del l[1] # x =del l[1] # 抛出异常,不支持赋值语法 # print(l) # 方式二:l.pop()根据索引删除,会返回删除的值 # l = [111, 'egon', 'hello'] # l.pop() # 不指定索引默认删除最后一个 # l.pop() # print(l) # res=l.pop(1) # print(l) # print(res) # 方式三:l.remove()根据元素删除,返回None # l = [111, 'egon', [1,2,3],'hello'] # l.remove([1,2,3]) # print(l) # res=l.remove('egon') # print(res) # None
3.3其他
l = [1, 'aaa', 'bbb','aaa','aaa'] #l.count() # print(l.count('aaa')) #统计个数 #l.index() # print(l.index('aaa')) #找索引 # print(l.index('aaaaaaaaa')) # 找不到报错 #l.clear() # l.clear() #删除 # print(l) #l.reverse() #不是排序,就是将列表倒过来 # l = [1, 'egon','alex','lxx'] # l.reverse() # print(l) # 5、l.sort() #列表内元素必须是同种类型才可以排序 # l=[11,-3,9,2,3.1] # l.sort() # 默认从小到大排,称之为升序 # l.sort(reverse=True) # 从大到小排,设置为降序 # print(l) # l=[11,'a',12] # l.sort() # l=['c','e','a'] # l.sort() # print(l)
3.4补充
#队列:FIFO,先进先出 l=[] # 入队操作 l.append('first') l.append('second') l.append('third') print(l) # # 出队操作 print(l.pop(0)) #first print(l.pop(0)) #second print(l.pop(0)) #third #堆栈:LIFO,后进先出 l=[] # 入栈操作 l.append('first') l.append('second') l.append('third') print(l) # 出队操作 print(l.pop()) #third print(l.pop()) #second print(l.pop()) #first
三、元组类型
1.定义
()内用逗号分隔开多个任意类型的元素,t=(1,1.3,'aa') # t=tuple((1,1.3,'aa')) ####### t=(10,) # 如果元组中只有一个元素,必须加逗号
2.作用
元组就是"一个不可变的列表"。作用:按照索引/位置存放多个值,只用于读不用于改
3.类型转换
# print(tuple('hello')) # print(tuple([1,2,3])) # print(tuple({'a1':111,'a2':333}))
4.内置方法:索引、切片、长度、成员运算符、循环等于上面字符串一样
四、字典类型
1.定义
{}内用逗号分隔开多个key:value,其中value可以使任意类型,但是key必须是不可变类型,且不能重复
2.造字典的方式
#方式一
# f={} # 默认定义出来的是空字典
# d={'k1':111,(1,2,3):222} # d=dict(...) # print(d['k1']) # print(d[(1,2,3)]) # print(type(d))
#方式二
# d=dict(x=1,y=2,z=3)# print(d,type(d))info=[ ['name','egon'], ('age',18), ['gender','male'] ]d={}for k,v in info: # k,v=['name','egon'], d[k]=vprint(d)res=dict(info) # 一行代码搞定上述for循环的工作print(res)keys=['name','age','gender']
d={}
for k in keys:
d[k]=None
print(d)
#d={}.fromkeys(keys,None) # 一行代码搞定上述for循环的工作
print(d)
3.内置方法一:长度、成员运算符与上面一样
按key存取
按key存取值:可存可取 # d={'k1':111} # 针对赋值操作:key存在,则修改 # d['k1']=222 # 针对赋值操作:key不存在,则创建新值 # d['k2']=3333 # print(d) d={'k1':111,'k2':2222} #d.keys() ['k2', 'k1'] #d.values() [2222, 111] #d.items() [('k2', 2222), ('k1', 111)] #dict(d.items()) {'k2': 2222, 'k1': 111}
删除
d={'k1':111,'k2':2222}
#通用删除
# del d['k1']
# print(d)
#pop删除:根据key删除元素,返回删除key对应的那个value值
# res=d.pop('k2')
# print(d)
# print(res)
# popitem删除:随机删除,返回元组(删除的key,删除的value)
# res=d.popitem()
# print(d)
# print(res)
for循环
d={'k1':111,'k2':2222}
for k in d.keys():
print(k)
for k in d: #和d.keys()一样
print(k)
for v in d.values():
print(v)
for k,v in d.items():
print(k,v)
print(list(d.keys()))
print(list(d.values()))
print(list(d.items()))
4.内置方法二
d = {'k1': 111}
# 1、d.clear()
# 2、d.update()
# d.update({'k2':222,'k3':333,'k1':111111111111111})
# print(d)
# 3、d.get() :根据key取值,容错性好
# print(d['k2']) # key不存在则报错
# print(d.get('k1')) # 111
# print(d.get('k2')) # key不存在不报错,返回None
# 4、d.setdefault()
# info={}
# if 'name' in info:
# ... # 等同于pass
# else:
# info['name']='egon'
# print(info)
# 4.1 如果key有则不添加,返回字典中key对应的值
info = {'name': 'egon'}
res = info.setdefault('name', 'egon')
print(info)
print(res)
# 4.2 如果key没有则添加,返回字典中key对应的值
info = {}
res = info.setdefault('name', 'egon')
# print(info)
print(res)
五、集合(set)
1.关系运算,去重,集合里面的元素不能重复
# friends1 = ["zero","kevin","jason","egon"] # friends2 = ["Jy","ricky","jason","egon"] # # l=[] # for x in friends1: # if x in friends2: # l.append(x) # print(l)
2.定义
在{}内用逗号分隔开多个元素,多个元素满足以下三个条件 1. 集合内元素必须为不可变类型 2. 集合内元素无序 3. 集合内元素没有重复3.关系运算
friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
#取交集:两者共同的好友
# res=friends1 & friends2
# print(res)
# print(friends1.intersection(friends2))
# 取并集/合集:两者所有的好友
# print(friends1 | friends2)
# print(friends1.union(friends2))
# 取差集:取friends1独有的好友
# print(friends1 - friends2)
# print(friends1.difference(friends2))
# 取friends2独有的好友
# print(friends2 - friends1)
# print(friends2.difference(friends1))
# 对称差集: 求两个用户独有的好友们(即去掉共有的好友)
# print(friends1 ^ friends2)
# print(friends1.symmetric_difference(friends2))
# 父子集:包含的关系
# s1={1,2,3}
# s2={1,2,4}
# 不存在包含关系,下面比较均为False
# print(s1 > s2)
# print(s1 < s2)
# s1={1,2,3}
# s2={1,2}
# print(s1 > s2) # 当s1大于或等于s2时,才能说是s1是s2父级
# print(s1.issuperset(s2))
# print(s2.issubset(s1)) # s2 < s2 =>True
# s1={1,2,3}
# s2={1,2,3}
# print(s1 == s2) # s1与s2互为父子
# print(s1.issuperset(s2))
# print(s2.issuperset(s1))
4.去重
1、只能针对不可变类型去重 # print(set([1,1,1,1,2])) # 2、无法保证原来的顺序 # l=[1,'a','b','z',1,1,1,2] # l=list(set(l)) # print(l) l=[ {'name':'lili','age':18,'sex':'male'}, {'name':'jack','age':73,'sex':'male'}, {'name':'tom','age':20,'sex':'female'}, {'name':'lili','age':18,'sex':'male'}, {'name':'lili','age':18,'sex':'male'}, ] new_l=[] for dic in l: if dic not in new_l: new_l.append(dic) # print(new_l)
5.其他
s={1,2,3}
# 需要掌握的内置方法1:discard
# s.discard(4) # 删除元素不存在do nothing
# print(s)
# s.remove(4) # 删除元素不存在则报错
# 需要掌握的内置方法2:update
# s.update({1,3,5})
# print(s)
# 需要掌握的内置方法3:pop
# res=s.pop()
# print(res)
# 需要掌握的内置方法4:add
# s.add(4)
# print(s)
res=s.isdisjoint({3,4,5,6}) # 两个集合完全独立、没有共同部分,返回True
print(res)
# s.difference_update({3,4,5}) # s=s.difference({3,4,5})
# print(s) #{1, 2}取s里面与{3,4,5}不一样的元素

浙公网安备 33010602011771号