3.18基础数据类型常用操作及内置方法
字符串
需要掌握的操作(****)
1、strip,lstrip,rstrip
msg = "****hello****"
print(msg.strip("*"))
print(msg.lstrip("*"))
print(msg.rstrip("*"))
2、lower,upper
msg = "Hello"
print(msg.upper())
print(msg.lower())
3、startswith,endswith
msg = "hello world"
print(msg.startswith("he"))
print(msg.endswith("ld"))
4、format的三种玩法
print("my name is %s my age is %s" %("egon",18))
print("my name is {x} my age is {y}".format(y=18,x="egon"))
print("my name is {} my age is {}".format(18,"egon"))
print("my name is my age is {0}{0}{1}{0}".format(18,"egon"))
x=111
y=222
print(f"my name is {x} my age is {y}")
5、split,rsplit
msg="x:y:z: a:b"
print(msg.split(":",1))
print(msg.rsplit(":",1))
6、join
print(":".join(["aaa","bbb","ccc"]))
7、replace
msg = "xx egon is hhha egon xxx egon"
print(msg.replace('egon','EGON'))
print(msg.replace('egon','EGON',1))
print(msg)
8、isdigit
msg = "123"
print(msg.isdigit())
age = input("your age>>>: ").strip()
if age.isdigit():
age = int(age)
if age > 18:
print('ok')
else:
print('小垃圾必须输入数字')
需要了解的方法
1、find,rfind,index,rindex,count
msg = "hello egon xxx egon yyy egon zzz"
print(msg.find("egon",0,7))
print(msg.index("egon"))
print(msg.rfind("egon"))
print(msg.rindex("egon"))
print(msg.find("abcde"))
print(msg.index("abcde"))
print(msg.count("egon"))
2、center,ljust,rjust,zfill
print('egon'.center(50,'*'))
print('egon'.ljust(50,'*'))
print('egon'.rjust(50,'*'))
print('egon'.zfill(50))
print('egon'.rjust(50,"0"))
3、captalize,swapcase,title
msg = "hellO woRld"
print(msg.capitalize())
print(msg.swapcase())
print(msg.title())
4、is数字系列
num1=b'4' #bytes
num2='4' # 阿拉伯数字
num3='四' #中文数字
num4='Ⅳ' #罗马数字
1、变量值是字节串或字符串类型并且包含的阿拉伯数字,isdigit()结果才为真
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
2、变量值是字符串类型并且包含的阿拉伯数字,isdecimal()结果才为真
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
3、变量值是字符串类型并且包含的阿拉伯数字\中文数字\罗马数字,isdecimal()结果才为真
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
5、is其他
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.islower())
print(name.isupper())
name=" "
print(name.isspace())
name ="Hello World"
print(name.istitle())
==该类型总结
存一个值
有序
不可变
列表
list基本使用
1、用途:按位置存放多个值
2、定义方式:在[]内用逗号分割开多个任意类型的元素
l = [11,3.3,"xx",[1111,2222]] # l = list(。。。)
print(type(l))
list数据类型转换: 所有可以被for循环遍历的类型都可以传给list然后转换成列表
print(list("abc"))
print(list({"k1":111,"k2":222}))
res=list(range(5))
print(res)
3、常用操作+内置的方法
优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可存也可以取
list1 = [111,222,333,444,555]
print(list1[0])
print(list1[-1])
print(id(list1))
list1[0] = 666
print(id(list1))
list1[5] = 777 # 不可以用不存在的索引赋值
2、切片(顾头不顾尾,步长)
list1 = [111,222,333,444,555]
print(list1[0:3])
print(list1)
l=list1[:] # 浅拷贝
print(l)
print(list1[::-1])
3、长度
list1 = [111,222,333,444,555]
print(len(list1))
4、成员运算in和not in
list1 = [111,222,333,444,555]
print(222 in list1)
5、追加
list1 = [111,222,333,444,555]
list1.append(666)
x = list1.append(777)
print(list1)
print(x)
list1.insert(2,666)
print(list1)
6、删除
list1 = [111,222,333,444,555]
(1) 单纯的删除-》没有返回值
del list1[0]
print(list1)
res=list1.remove(333)
print(list1)
print(res) # None
(2)取走-》有返回值
res=list1.pop(1)
print(list1)
print(res)
7、循环
list1 = [111,222,333,444,555]
for x in list1:
print(x)
4、需要掌握的操作
list1 = [111,222,333,333,333,444,555]
print(list1.count(333))
list1= [99,33,22,11,-3,87]
list1.reverse()
print(list1)
list1 = [111,222,333,333,333,444,555]
list1.clear()
list1.append([666,777,888])
for x in [666,777,888]:
list1.append(x)
list1.extend([666,777,888])
print(list1)
浅copy
list1.copy()
list1[:]
list1 = [111,222,777,888,999,333,333,333,444,555]
res=list1.index(333,0,3)
print(res)
list1 = [111,222,777,888,999,333,333,333,444,555]
list1.sort(reverse=True)
print(list1)
queue = []
queue.append('one')
queue.append('two')
queue.append('three')
print(queue)
print(queue.pop(0))
print(queue.pop(0))
print(queue.pop(0))
5.该类型总结
存多个值
有序
可变
元组
tuple基本使用
1、用途:
2、定义方式:
在()内用逗号分隔开多个任意类型的元素
x = (10,) # x= tuple(...)
print(x,type(x))
tuple数据类型转换:任意能够被for循环遍历的类型都可以交给tuple转成元组
print(tuple("hello"))
3、常用操作+内置的方法
优先掌握的操作:
1、按索引取值(正向取+反向取):只能取
t = (111,222,333,[44,555])
print(t[0])
t[0]=6666
2、切片(顾头不顾尾,步长)
t = (111,222,333,[44,555])
print(t[0:3])
3、长度
t = (111,222,333,[44,555])
print(len(t))
4、成员运算in和not in
t = (111,222,333,[44,555])
print([44,555] in t)
5、循环
t = (111,222,333,[44,555])
for x in t:
print(x)
需要掌握的操作:
t = (111,222,333,[44,555])
t.index()
t.count()
5.该类型总结
存多个值
有序
不可变
字典
dict基本使用
1、用途
2、定义方式:
在{}内用逗号分隔开多个元素,每个元素都是key:value的格式,其中value可以是任意类型
而key必须是不可变类型,通常是str类型,而且key不能重复
dic = {111:6666,"k1":777,(1,2,3):8888,[1,2,3]:3333} # dic = dict(...)
dic = {111:6666,"k1":777,(1,2,3):8888,"k1":99999999}
print(dic)
print(dic[(1,2,3)])
dict数据类型转换
info = [('k1',111),('k2',222),('k3',3333)]
dic=dict(info)
print(dic)
print(dict(x=1,y=2,z=3))
3、常用操作+内置的方法
优先掌握的操作:
1、按key存取值:可存可取
dic = {"name":"egon","age":18}
dic['gender'] = "male"
dic['name'] = "xxxx"
print(dic)
2、长度len
dic = {"name":"egon","age":18}
print(len(dic))
3、成员运算in和not in: 以key为准
dic = {"name":"egon","age":18}
print('name' in dic)
4、删除
dic = {"name": "egon", "age": 18}
单纯的删除
del dic['name']
print(dic)
取走
v=dic.pop("name")
print(v)
v = dic.popitem()
print(v)
5、键keys(),值values(),键值对items()
dic = {"name": "egon", "age": 18}
>>> dic.keys()
['age', 'name']
>>> dic.values()
[18, 'egon']
>>>
>>> dic.items()
[('age', 18), ('name', 'egon')]
>>>
6、循环
for k in dic.keys():
print(k)
for k in dic:
print(k)
for v in dic.values():
print(v)
for k,v in dic.items():
print(k,v)
8、get()
dic = {"name": "egon", "age": 18}
print(dic['namexxxx'])
print(dic.get("namexxxx"))
需要掌握的操作
dic = {"name": "egon", "age": 18}
dic.update({'gender':"male","age":19})
print(dic)
dic = {}.fromkeys(["name","age","gender"],[])
print(dic)
dic['name'].append(1111)
print(dic)
dic = {}.fromkeys(["name","age","gender"],None)
dic = {"age": 18}
if "name" not in dic:
dic['name'] = "xxx"
v = dic.setdefault('name',"xxx")
print(dic)
print(v)
4.该类型总结
存多个值
无序
可变
集合类型
=set基本使用=
1、用途:
(1)关系运算
(2)去重
pythons = ["egon",'lxx',"张全蛋","李铁蛋",'刘金蛋',"赵银弹"]
linuxs = ['lili','jack','egon','lxx','tom','kkk']
l = []
for stu in pythons:
if stu in linuxs:
l.append(stu)
print(l)
2、定义方式:
在{}内用逗号分割开多个元素,需要注意的是集合的元素必须满足
1、集合的元素必须是不可变类型
2、集合的元素无序
3、集合的元素没有重复
s = {}
print(type(s)) # 空字典
s = set() # 定义空集合
s = {1,'a',2,'b',3,'b','b','b'} # s=set({1,2,3})
print(type(s))
print(s)
2.set数据类型转换
res = set(“hello”)
res = set([111,222,333,111,[666,777]])
print(res)
3、常用操作+内置的方法
3.1 去重
names = ["egon","egon","egon",'lili','jack',[111,222]]
res = list(set(names))
print(res)
students = [
{"name":"egon1","age":18,"gender":"male"},
{"name":"egon2","age":19,"gender":"female"},
{"name":"egon3","age":20,"gender":"female"},
{"name":"egon1","age":18,"gender":"male"},
{"name":"egon1","age":18,"gender":"male"},
]
new_l = []
for info in students:
if info not in new_l:
new_l.append(info)
print(new_l)
3.2 关系运算
pythons = {"egon",'lxx',"张全蛋","李铁蛋",'刘金蛋',"赵银弹"}
linuxs = {'lili','jack','egon','lxx','tom','kkk'}
(1)交集:求既报名pyton又报名linux的学员姓名
print(pythons & linuxs)
print(pythons.intersection(linuxs))
(2)并集:求所有学生姓名
print(pythons | linuxs)
print(pythons.union(linuxs))
(3)差集: 求只报名python的学员姓名
print(pythons - linuxs)
print(pythons.difference(linuxs))
print(linuxs - pythons)
(4)对称差集:求没有同时报名两门课程的学员
res = (pythons - linuxs) | (linuxs - pythons)
res = pythons ^ linuxs
print(res)
res = pythons.symmetric_difference(linuxs)
print(res)
(5) 父子集:父子指的包含与被包含的关系
父集:>=
子集:<=
s1 = {1,2,3}
s2 = {1,2}
print(s1 >= s2)
print(s1.issuperset(s2))
print(s2 <= s1)
print(s2.issubset(s1))
了解的内置方法
s1 = {'a',1,2,3}
res = s1.pop()
res = s1.remove(2)
s1.remove(4)
s1.discard(2)
print(s1)
print(res)
s1.add(4)
s1.update({4,5,6,3})
s1 = s1.difference({3,4,5})
s1.difference_update({3,4,5})
print(s1.isdisjoint({3,4,5,6}))
print(s1)
s1 = {111,222,333,444,555}
for x in s1:
print(x)
=该类型总结=
存多个值
无序
set集合可变,frozenset不可变集合
s2 = frozenset({1,2,3})
print(type(s2))
深浅copy
默认情况下都是浅copy
"""
l1 = [111,222,[333,444]]
l2 = l1.copy()
l3 = l1[:]
print(id(l1[0]),id(l1[1]),id(l1[2]))
print(id(l2[0]),id(l2[1]),id(l2[2]))
l1[2][0] = 666
l1[0] = 777
print(l1)
print(l2)
man = ["上海",[100,]]
woman = man.copy()
man[1][0] -= 30
print(man)
print(woman)
"""
深copy
from copy import deepcopy
l1 = [111,222,[333,444]]
l2 = deepcopy(l1)
print(id(l1[0]),id(l1[1]),id(l1[2]))
print(id(l2[0]),id(l2[1]),id(l2[2]))
l1[2][0] = 666
print(l1)
print(l2)