day14_数据类型之集合and字符串拼接and函数基础
一、集合 set
set 集合特性
1.不同元素组成 2.无序 3.集合中元素必须是不可变类型
add(self, *args, **kwargs)
功能:添加 s = {1,2,3,4,5,6} s.add('liyang') s.add('2') s.add(3) print(s) 输出结果:{1, 2, 3, 4, 5, 6, 'liyang', '2'}
clear(self, *args, **kwargs)
功能:清空集合 s = {1,2,3,4,5,6} s.clear() print(s) 输出结果:set()
copy(self, *args, **kwargs)
功能:拷贝 s = {1,2,3,4,5,6} v = s.copy() print(v) 输出结果:{1, 2, 3, 4, 5, 6}
pop(self, *args, **kwargs)
功能:随机删除 s = {1,2,'liyang',4,'sun',6} s.pop() print(s) 输出结果:{2, 4, 6, 'liyang', 'sun'}
remove(self, *args, **kwargs)
功能:指定删除,不存在会报错 s = {1,2,'liyang',4,'sun',6} s.remove('sun') print(s) 输出结果:{1, 2, 4, 'liyang', 6}
discard(self, *args, **kwargs)
功能:删除元素不存在,不会报错 s = {1,2,'liyang',4,6} s.discard('sun') print(s) 输出结果:{1, 2, 'liyang', 4, 6}
intersection(self, *args, **kwargs)
功能:求交集(共有的部分) pyton = ['liyang','sun','lili'] linux = ['liyang','sun'] pyton_linxu = [] for p_name in pyton: if p_name in linux: pyton_linxu.append(p_name) print(p_name) python = ['liyang','sun','lili'] linux = ['liyang','sun'] p_s = set(python) l_s = set(linux) print(p_s.intersection(l_s)) print(p_s&l_s) 输出结果:{'sun', 'liyang'}
union(self, *args, **kwargs)
功能:求并集 (合并到一起,重复的部分去掉) python = ['liyang','sun','lili'] linux = ['liyang','sun','xx','yy'] p_s = set(python) l_s = set(linux) print(p_s.union(l_s)) print(p_s|l_s) 输出结果:{'sun', 'xx', 'lili', 'liyang', 'yy'}
difference(self, *args, **kwargs)
功能:求差集(两个集合相减的结果) python = ['liyang','sun','lili'] linux = ['liyang','sun','zz'] p_s = set(python) l_s = set(linux) print(p_s.difference(l_s)) print(p_s-l_s) 输出结果:{'lili'}
symmetric_difference(self, *args, **kwargs)
功能:交叉补集(求两个集合中不同的地方) python = ['liyang','sun','lili'] linux = ['liyang','sun','zz'] p_s = set(python) l_s = set(linux) print(p_s.symmetric_difference(l_s)) print(p_s^l_s) 输出结果:{'lili', 'zz'}
difference_update
功能:求完差集,把结果赋值给集合 python = ['liyang','sun','lili'] linux = ['liyang','sun','zzz'] p_s = set(python) l_s = set(linux) p_s.difference_update(l_s) print(p_s) 输出结果:{'lili'}
isdisjoint
功能:如果这两个集合没有交集就返回True s1 = {1,2} s2 = {3,4} print(s1.isdisjoint(s2)) 输出结果:True
issubset
功能:如果s1是s2的子集就返回True s1 = {1,2} s2 = {1,2,3,4} print(s1.issubset(s2)) 输出结果:True
issuperset
功能:如果s1是s2的父集就返回True s1 = {1,2} s2 = {1,2,3,4} print(s2.issuperset(s1)) 输出结果:True
update
update 功能:更新 s1 = {1,2} s2 = {1,2,3,4} s1.update(s2) print(s1) 输出结果:{1, 2, 3, 4}
frozenset 定义不可变集合
s = frozenset('hello') print(s)
列表去重复方法
name = ['liyang','liyang','sun'] name = list(set(name)) print(name) 输出结果:['sun', 'liyang']
二、字符串格式化
a.百分号字符串格式化
%s (表示所有类型)
msg = 'i am %s my age is %d' %('liyang',23) print(msg)
浮点数(.2f表示保留2位)
tp1 = 'precent %.2f' % 99.66666 print(tp1)
打印百分比(%%
tp2 = 'precent %.2f %%' % 99.8888 print(tp2)
k,v的方式
tp3 = "i am %(name)s age %(age)d" % {'name':"liyang",'age':28} print(tp3)
加颜色(+20表示加空格)
msg = 'i am \033[43;1m%(name)+20s\033[0m age is 23' % {'name':"liyang"} print(msg)
sep分割符
print('root','x','0','1',sep=':') 输出结果:root:x:0:1
b. format 字符串格式化
指定元组索引
tp1 = "i am {0}, age {1}".format("liyang",18) print(tp1)
指定k,v
tp2 = "i am {name}, age {age}".format(name="liyang",age=18) print(tp2)
指定字典类型(加两个**)
tp3 = "i am {name}, age {age}".format(**{'name':"liyang",'age':18}) print(tp3)
{:s} {:d}
tp4 = "i am {:s}, age {:d}".format("liyang",28) print(tp4)
定义列表
l = ["liyang",18] tp5 = "i am {:s}, age {:d}".format(*l) print(tp5)
三、函数
传参数:
def test(x): ''' :param x: 整形数字 :return: 返回计算结果 ''' y = 2 * x + 1 return y a = test(3) print(a)
不传参数:
def test(): ''' :param x: 整形数字 :return: 返回计算结果 ''' x = 3 y = 2 * x + 1 return y a = test() print(a)
PS:
函数定义返回值(return)当程序执行到return的时候,程序将停止执行函数内余下的语句。
函数没有定义返回值,默认返回一个None
过程:就是没有返回值的函数。
实例1:
def test01(): msg = 'hello The little green forg' print(msg) def test02(): msg = 'hello liyang' print(msg) return msg def test03(): msg = 'test03' print(msg) return 1,2,3,4,'a',['liyang'],{'name':"liyang"},None t1 = test01() t2 = test02() t3 = test03() print(t1) print(t2) print(t3) 输出结果: hello The little green forg hello liyang None hello liyang (1, 2, 3, 4, 'a', ['liyang'], {'name': 'liyang'}, None) 总结: 返回值=0;返回None 返回值=1;返回object 返回值>1;返回值tuple
函数参数:
1,位置参数:必须一一对应,缺一不可多一不可
def test(x,y,z): # x = 1 ,y=2 ,z=3 print(x) print(y) print(z) test(1,2,3)
2,关键字参数:无需一一对应,缺一不可多一不可
def test01(x,y,z): # x = 1 ,y=2 ,z=3 print(x) print(y) print(z)
test01(y=1,x=2,z=3)
3,默认参数
def test01(x,type='mysql'): print(x) print(type)
test01('hello')
参数组:
1,(*列表)
def test(x,*args): print(x) print(args) # print(args[0]) test(1,2,3,4,5,6) test(1,['x','y','z']) test(1,*['x','y','z']) 输出结果: 1 (2, 3, 4, 5, 6) 2 (['x', 'y', 'z'],) ('x', 'y', 'z')
2,(**字典)
def test(x,**kwargs): print(x) print(kwargs) test(1,y=2,z=3) 输出结果: 1 {'y': 2, 'z': 3}
3,(**字典 *列表)
def test(x,*args,**kwargs): print(x) print(args,args[-1]) # 根据索引取值 # print(kwargs,kwargs['z']) # 根据key取值 print(kwargs,kwargs.get('y')) # 根据key取值 test(1,1,2,3,4,y=5,z=6) test(1,*[1,2,3],**{'y':9}) 输出结果: 1 (1, 2, 3, 4) 4 {'z': 6, 'y': 5} 6 1 (1, 2, 3) 3 {'y': 9} 9