python学习day-4 集合与函数
---恢复内容开始---
一、数据类型及变量总结
1、可变与不可变 修改变量的值,id可不可变
可变:id不变 列表,字典
不可变:id变了 字符串,数字,元祖
2、访问顺序
直接访问:数字
顺序访问(索引):字符串 列表 元祖
映射访问:字典
字典比列表速度快,但是占内存大
3、存放元素个数
容器类型:列表 元祖 字典
原子类型:数字 字符串
二、集合定义基本操作方法set
定义:不同元素组成的集合,是一组无序的,元素类型是不可变类型(数据字符串元祖)
s={1,2,3,33,8,9}
s=set{'hello'} 输出s {'o','e','l','h'}
1.集合的内置方法
s={1,2,3,4,5,6}
1.添加 add
s.add('s')
s.add('3')
s.add(3)
print(s)
3.清空clear
s.clear()
print(s)
4.复制
s1=s.copy()
5.随机删pop
s.pop()
6.指定删除remove discard
s.remove('sb')
s.remove('hellol') #删除元素不存在会报错
s.discard('sbbbb')#删除元素不存在不会报错
print(s)
2.集合的关系运算交叉并集
有一个笨方法
python_l=['lcg','szw','zjw']
linux_l=['lcg','szw']
python_and_linux_l=[]
for p_name in python_l:
if p_name in linux_l:
python_and_linux_l.append(p_name)
print(python_and_linux_l)
python_l=['lcg','szw','zjw','lcg']
linux_l=['lcg','szw','sb']
p_s=set(python_l)
l_s=set(linux_l
1.求交集&
print(p_s,l_s)
print(p_s.intersection(l_s))
print(p_s&l_s)
2.求并集|
print(p_s.union(l_s))
print(p_s|l_s)
3.差集
print('差集',p_s-l_s)
print(p_s.difference(l_s))
print('差集',l_s-p_s)
print(l_s.difference(p_s))
4.交叉补集^
print('交叉补集',p_s.symmetric_difference(l_s))
print('交叉补集',p_s^l_s)
python_l=['lcg','szw','zjw','lcg']
linux_l=['lcg','szw','sb']
p_s=set(python_l)
l_s=set(linux_l)
print(p_s,l_s)
print('差集',p_s-l_s)
p_s=p_s-l_s
p_s.difference_update(l_s)
print(p_s)
5.isdisjoint:如果s1与s2做交集运算,如果没有交集,就返回True
s1={1,2}
s2={2,3,5}
print(s1.isdisjoint(s2))
6.判断子集父级issubset issuperset
issubset:s1<=s2
s1={1,2}
s2={1,2,3}
print(s1.issubset(s2))#s1 是s2 的子集
print(s2.issubset(s1))#False
issuperset:s1>=s2
print(s2.issuperset(s1))#s1 是s2 的父集
7.更新update
s1={1,2}
s2={1,2,3}
s1.update(s2) #更新多个值
s1.add(1,2,3,4) #更新一个值
s1.union(s2) #不更新
print(s1)
8.frozenset 定义不可集合
s=frozenset('hello')
print(s)
不考虑顺序进行列表去重
names=['alex','alex','wupeiqi']
names=list(set(names))
print(names)
三、百分号字符串拼接
1.%s 万能 %d 数字
msg='i am %s my hobby is %s' % ('lhf','alex')
print(msg)
msg='i am %s my hobby is %s' % ('lhf',1)
msg='i am %s my hobby is %s' % ('lhf',[1,2])
print(msg)
name='lhf'
age=19
msg='i am %s my hobby is %s' % (name,age)
2.打印浮点数 percent &.f .后边的保留几位数字 默认保留六位数字
tpl = "percent %.2f" % 99.976234444444444444
3.打印百分比 %%
tpl = 'percent %.2f %%' % 99.976234444444444444
4.传字典
tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18}
print(tpl)
5.%(names)[+-空格0]占有位数 s
+右对齐,正数前加正好,负数前加负号
—左对齐,正数前无符号,负数前加负号
空格右对齐,正数前加空格,负数前无符号
0左对齐,正数前无符号,负数前加负号,0填空白处
msg='i am %(name)+60s my hobby is alex' %{'name':'lhf'}
6.加颜色
msg='i am \033[43;1m%(name)+60s\033[0m my hobby is alex' %{'name':'lhf'}
四、format字符串格式化
tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
tpl = "i am {:s}, age {:d}".format(*["seven", 18])
tpl = "i am {:s}, age {:d}".format("seven", 18) #["seven", 18]
l=["seven", 18]
tpl = "i am {:s}, age {:d}".format('seven',18)
print(tpl)
tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%},{}".format(15, 15, 15, 15, 15, 15.87623, 2)
print(tpl)
b二进制 o八进制 d 整型 x小写十六进制 X大写十六进制 %百分号
五、函数
def test(x):
'''
2*x+1
:param x:整形数字
:return: 返回计算结果
'''
y=2*x+1
return y
def test():
'''
2*x+1
:param x:整形数字
:return: 返回计算结果
'''
x=3
y=2*x+1
return y
a=test()
print(a)
过程:就是没有返回值的函数
def test01():
msg = 'test01'
print(msg)
def test(x,y,z):#x=1,y=2,z=3
print(x)
print(y)
print(z)
位置参数,必须一一对应,缺一不行多一也不行
test(1,2,3)
关键字参数,无须一一对应,缺一不行多一也不行
test(y=1,x=3,z=4)
混合使用的话:位置参数必须在关键字参数左边
test(1,y=2,3)#报错
test(1,3,y=2)#报错
test(1,3,z=2)
test(1,3,z=2,y=4)#报错
test(z=2,1,3)#报错
默认参数:
def handle(x,type='mysql'):
print(x)
print(type)
handle('hello')
handle('hello',type='sqlite')
handle('hello','sqlite')
def install(func1=False,func2=True,func3=True):
pass
参数组:**字典 *列表
def test(x,*args):
print(x)
print(args)
test(1,2,3,4,5) 输出args=(2,3,4,5) 当做元祖的方式来处理
test(1,{'name':'alex'})
test(1,['x','y','z']) 整个列表变成了一个整体放入args里
test(1,*['x','y','z']) 元祖方式处理
test(1,*('x','y','z'))
def test(x,**kwargs):
print(x)
print(kwargs)
test(1,y=2,z=3)
test(1,1,2,2,2,2,2,y=2,z=3) 报错
test(1,y=2,z=3,z=3)#会报错 :一个参数不能传两个值
def test(x,*args,**kwargs):
print(x)
print(args,args[-1])
print(kwargs,kwargs.get('y'))
test(1,1,2,1,1,11,1,x=1,y=2,z=3) #报错
test(1,*[1,2,3],**{'y':1})