Py集合,字符串的格式化,函数,便利
可变与不可变
不可变指的是:重新赋值时,内存中的id值会变得
其中有:字符串,数字,元组name="sb" v=id(name) print(v) name ="alex" v1 =id(name) print(v1)
可变指的是:重新赋值时,内存中的id值不会变得
其中有列表,字典hobby=["code","play"] v=id(hobby) print(v) hobby[0]="123" m=id(hobby) print(m)
数据类型:集合
属性:由不同的元素组合,集合中的元素必须是不可变型(字符串或数字或元组)定义方法:
s={1,2,2,3,3,3,"ab"}
print(s)
输出后重复的会被去掉,因为集合是由不同元素组合的
集合是无序的,不能下标取值
可以通过函数创建集合set()
s=set("hello") print(s)
1.在末尾添加元素add()
2.清空clear()
3.拷贝copy()
4. 随机删除一个元素pop()
5.指定删除某个元素remove(),如果指定删除的元素没有则会报错
s={"sb",1,12,2,3}
s.remove("sb")
print(s)
5.指定删除某个元素discard(),如果指定删除的元素没有不会报错
s={"sb",1,12,2,3}
s.discard("sbb")
print(s)
6.列表转换成集合set()
pyl=["11","22","##","11"] lsl =[22,"ppp"] ps1=set(pyl) ps2=set(lsl) print(ps1,ps2)
7.求两个集合的交集intersection()
pyl=["11","22","##","11"] lsl =["22","ppp"] ps1=set(pyl) ps2=set(lsl) print(ps1.intersection(ps2)) print(ps1&ps2)
8.求两个集合的并集union()
pyl=["11","22","##","11"] lsl =["22","ppp"] ps1=set(pyl) ps2=set(lsl) print(ps1.union(ps2)) print(ps1|ps2)
8.求两个集合的差集difference(),差集表示前面这个集合有的后面的那个集合没有的
pyl=["11","22","##","11"] lsl =["22","ppp"] ps1=set(pyl) ps2=set(lsl) print(ps1.union(ps2)) print(ps1|ps2)
9.交叉补集(把两个集合先和到一块,再去掉两者共有的部分)symmetric_difference()
第一个集合,symmetric_difference(第二个集合)可用于:有两门课,找出其中只报了一门课的人
10.差集再更新,求完差集后赋值给前面的集合difference_update()
pyl=["lcg","scw","zjw","lcg"] lnl=["lcg","scw","sb"] p_s = set(pyl) l_s = set(lnl) p_s.difference_update(l_s) print(p_s)
11.判断集合是否没有交集isdisjoint()
pyl=["lcg","scw","zjw","lcg"] lnl=["lcg","scw","sb"] p_s = set(pyl) l_s = set(lnl) p_s.difference_update(l_s) print(p_s)
12.判断一个是不是另一个的子集issubset()
s1={1,2}
s2={1,2,3}
print(s1.issubset(s2))
print(s2.issubset(s1))
13.判断是不是父集issuperset()
14.求并集后赋值给前面的那一个集合update()
s1={1,2}
s1.update({15,4,3})
print(s1)
可以一次更新多个值
15.建立不可修改的集合frozenset()
s=frozenset("hrllo") print(s)
字符串的格式化
字符串的拼接
百分号代表格式化,s代表字符串类型%s代表此处填入字符串,如果只截取前两位%.2s
%d表示整型数字
%f表示浮点小数,如果只取两位小数%.2f(会自动四舍五入)
要打印出百分号需要输入两个百分号%%
print("i am %s my hobby is abcd" %"ewq")
print("i am"+" ewq "+"my hobby is abcd")
print("i am %s my hobby is %s" %("ewq","shit"))
左对齐(-)
print("i am %-60s my hobby is abcd" %"ewq")右对齐(+)
print("i am %-60s my hobby is abcd" %"ewq")在一段中间插入相同的字符串
print("user",'asd','ddd',sep=':')使用format传送值
不按顺序传
tpl = "i am {2},age {1},{0}".format("seven",18,"alex") print(tpl)
按照名字来传
tpl = "i am {name},age {age},{value}".format(name="seven",age=18,value="alex") print(tpl)
用字典来传(字典前面加两颗星星)
tpl = "i am {name:s},age {age:d},{value}".format(**{"name":"seven","age":18,"value":"alex"}) print(tpl)
用列表来传(列表前面加一颗星)
tpl = "i am {:s},age {:d}".format(*["seven",18]) print(tpl)
用星号引用(便利)另一个指针的
l=['seven',18] tpl = "i am {:s},age {:d}".format(*l) print(tpl)
:b代表二进制 :o代表八进制 :d代表整形 :x代表十六进制(字母部分小写) :X代表十六进制
(字母部分大写) :%代表显示百分比(带六位的小数)。
tpl = "number : {:b},{:o},{:d},{:x},{:X},{:%}".format(15,15,15,15,15,15.87652,2) print(tpl)
函数:
1.定义方法
def test(x): "函数注释" y=2*x+1 return y feedback=test(3) print(feedback)
2.test如果没有自变量就直接test()
3.如果函数重名,调用的将是最新最下面的那一个函数
函数与过程
函数是逻辑结构化的一种编程方法,包含返回值return的过程是逻辑结构化的一种编程方法,没有返回值return的
如果return返回的是多个值,那它返回的那些值会拼接成一个元组
def calc(x,y): res=x**y return res c = calc(a,b) print(c)
这个程序里面的xy是形参,ab是实参。**代表求平方
形参是不占据内存空间的,当被赋值时才占据空间
def calc(x,y): res=x**y return res a= input("请输入底数") b= input("请输入次方") c = calc(int(a),int(b)) print(c)
函数里面的参数的子项的顺序可以不按顺序,但是个数不能多 也不能少
def printabcd(x,y,z): print(x) print(y) print(z) printabcd(z=1,y=3,x=2)
默认参数
以下的type为默认参数
def handle(x,type='mysql'): print(x) print(type) handle('hello')
当然默认参数也是可以被赋值的
def handle(x,type='mysql'): print(x) print(type) handle('hello','abce')
参数组:字典前面加**,元组前面加*
def test(x,*args): print(x) print(args) test(1,2,3,4,5,6) def test1(x,**kargs): print(x) print(kargs) test1(1,y=2,z=3)

浙公网安备 33010602011771号