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})

 

 

 



    

     

 

posted @ 2018-07-02 23:57  enough  阅读(177)  评论(0编辑  收藏  举报