Python学习--day3
一、集合
1. 什么是集合
dict的作用是建立一组 key 和一组 value 的映射关系,有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,这时,集合就派上用场了。集合set是一个无序的,不重复的数据组合。它的作用主要有:
- 去重,set中的元素没有重复,而且是无序的
- 关系测试,测试两组数据之前的交集、差集、并集等关系
创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:
1 list_1=[1,2,3,'oldboy','alex'] 2 list_1=set(list_1) 3 print(list_1)
运行结果:
{1, 2, 3, 'alex', 'oldboy'}
2. 集合更新
集合的更新分为两种:元素的增加和删除
添加元素时,用set的add()方法,如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:
1 s=set([1,2,3,'oldboy','alex']) 2 s.add('金角大王') 3 print(s)
运行结果:
{'alex', 1, 2, 3, 'oldboy', '金角大王'}
删除元素set有remove方法,如果删除的元素不存在,会报错:
1 s=set([1,2,3,'oldboy','alex']) 2 s.remove('alex') 3 print(s)
运行结果:
{1, 2, 3, 'oldboy'}
3. 关系测试
(1)取两个集合的交集
1 s1=set([1,2,3,'oldboy','alex']) 2 s2=set([2,4,6,'alex','金角大王']) 3 print(s1 & s2)
运行结果:
{'alex', 2}
(2)取两个集合的并集
1 s1=set([1,2,3,'oldboy','alex']) 2 s2=set([2,4,6,'alex','金角大王']) 3 print(s1 | s2)
运行结果:
{1, 2, 3, 4, 6, 'alex', 'oldboy', '金角大王'}
(3)取两个集合的差集:
1 s1=set([1,2,3,'oldboy','alex']) 2 s2=set([2,4,6,'alex','金角大王']) 3 print(s1 - s2)
运行结果,打印只属于s1但不属于s2的元素:
{'oldboy', 1, 3}
二、文件
文本文件的读写主要通过open()所构建的对象来实现
1. 创建文件对象
打开一个文件,并使用一个对象来表示该文件:f = open(文件名,模式),常用的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
例:读取原文件的内容写入到一个新的文件中,并且将其中的“肆意的快乐等我享受”这句话替换成“肆意的快乐等alex去享受”
1 f=open('yesterday.txt','r') 2 f_new = open('yesterday_new.txt','w',encoding='utf-8') 3 for line in f: 4 if '肆意的快乐等我享受' in line: 5 line = line.replace('肆意的快乐等我享受','肆意的快乐等alex去享受') 6 f_new.write(line) 7 f.close() 8 f_new.close()
三、函数
1. 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
1 def test(): 2 print('Hello 金角大王') 3 test()
运行结果:
Hello 金角大王
2. 函数参数传递
(1)关键字参数:根据关键字传递参数,与形参的位置无关
1 def test(x,y): 2 print(x) 3 print(y) 4 test( x='金角大王',y='银角大王')
运行结果:
金角大王
银角大王
(2)位置参数:根据形参位置传递,不写关键字,只写出实际参数,传递参数顺序 必须与形参顺序保持一致
1 def test(x,y): 2 print('x=',x) 3 print('y=',y) 4 test( '金角大王','银角大王') 5 test('银角大王','金角大王')
运行结果:
x= 金角大王 y= 银角大王 x= 银角大王 y= 金角大王
(3)默认值参数:函数的默认参数的作用是简化调用只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。
1 def test(x,y=0): 2 print('x=', x) 3 print('y=',y) 4 test(1)#只传递第一个参数,第二个参数取默认值 5 test(8,9)#给参数都赋值后,覆盖默认参数
运行结果:
x= 1 y= 0 x= 8 y= 9
(4)可变参数:可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把参数 看成一个 tuple 了:
1 def test(*args): 2 print(args) 3 test(1,2,3) 4 test(1,'hello')
运行结果:
(1, 2, 3) (1, 'hello')
还有一种多值参数,形参前面有 ** (双星号),所有正常形参之外的其他的关键字参数都将被放置在一个字典中传递给函数,比如:
1 def test(**args): 2 print(args) 3 test(name='Alex',age=30,ginder='M')
运行结果:
{'ginder': 'M', 'name': 'Alex', 'age': 30}
组合参数:关键字参数不可以写在位置参数前面
1 def test(name, age=18, *args, **kargs): 2 print(name) 3 print(age) 4 print(args) 5 print(kargs) 6 7 test('jim', 15, 16, 'hello', sex='M', hooby='car')
运行结果:
jim 15 (16, 'hello') {'sex': 'M', 'hooby': 'car'}