北方姆Q卷土重来!今日化身!!!
1.集合:字典的小伙伴,也是无序的,但不是kv对应存储,萌~
#!/usr/bin/env python
s1 = {'a','b','c','a','d',}
print(s1) #重复的元素只会出现一次哦
print(type(s1)) #类型是set,集合类型
s1.add('w') #增加元素
s1.add('w') #重复增加并没有什么卵用
s1.add('w') #没什么卵用的用三遍
s1.add('w')
print(s1)
s1.remove('w') #删除元素,如果元素不存在会报错
s1.discard('dsds') #删除元素,如果元素不存在不会报错
print(s1)
r1 = s1.pop() #随机移除一个元素并获取他
print(r1)
s1.clear() #全部清空
print(s1)
s1 = {'a','b','c','a','d',}
s2 = {'a','b','e','f',}
s = s1.difference(s2) #s1s2中不同的元素
print(s)
#s1.difference_update(s2) #与s2进行对比然后直接将不同的元素更新到s1中
s3 = s1.symmetric_difference(s2)#s1与s2的对称差集
print(s3)
s4 = s1.intersection(s2) #交集
print(s4)
s5 = s1.union(s2) #并集
print(s5)
C:UsersAdministratorAppDataLocalProgramsPythonPython35-32python.exe C:/Users/Administrator/PycharmProjects/ACE/study3/setttt.py
{'a', 'b', 'd', 'c'}
<class 'set'>
{'a', 'b', 'd', 'w', 'c'}
{'a', 'b', 'd', 'c'}
a
set()
{'d', 'c'}
{'d', 'c', 'e', 'f'}
{'a', 'b'}
{'a', 'b', 'd', 'c', 'e', 'f'}
Process finished with exit code 0
2.三元运算:并没有什么卵用
#!/usr/bin/env python
print('bfmq') if 1 == 1 else print('mmd') #跟下面的一个意思,简化写法
# if 1 == 1:
# print('bfmq')
# else:
# print('mmd')
C:UsersAdministratorAppDataLocalProgramsPythonPython35-32python.exe C:/Users/Administrator/PycharmProjects/ACE/study3/sanyuan.py
bfmq
Process finished with exit code 0
3.lambda:也没有什么卵用
#!/usr/bin/env python
# def f1(a1):
# return a1 + 10
# ret = f1(10)
# print(ret)
f1 = lambda a1:a1 + 10 #简易函数跟上面一个意思
ret = f1(10)
print(ret)
C:UsersAdministratorAppDataLocalProgramsPythonPython35-32python.exe C:/Users/Administrator/PycharmProjects/ACE/study3/nameda.py
20
Process finished with exit code 0
4.文件操作:
‘r’模式:以读方式打开,不能进行写操作,文件必须是已经存在的
‘r+’模式:以读写方式打开,文件必须是已经存在的,写操作会根据指针所在位置顶替原本字节
‘w’模式:以写方式打开,不能进行读操作,若文件存在,则先清空,然后重新创建;若不存在,则创建文件
‘w+’模式:以读写方式打开,若文件存在,则先清空,然后重新创建;若不存在,则创建文件
‘a’模式:以追加方式打开,不能进行读操作,把数据追加到文件的末尾;若不存在,则创建文件
‘a+’模式:以读写方式打开,把数据追加到文件的末尾;若不存在,则创建文件,指针无效
‘b’模式:
以二进制模式打开,不能作为第一个字符出现,需跟以上模式组合使用,如’rb’,’rb+’等(大部分时间用不到,搞清楚utf-8跟gbk)
‘x’模式:文件存在就报错,不存在就建立并可写
with open('XXX', 'r', encoding='utf-8') as f1, open('XXX', 'x', encoding='utf-8') as f2:
l1 = f1.readlines()
for line in l1:
f2.write(line)
4.函数:这个实在是...语文老师还没死也没用啊
函数分为自定义函数跟内置函数,内置函数大多数为经常使用的功能封装好的类中的函数,所以自定义函数起名时不要跟内置函数名称相冲突,否则会死的很惨,也要合理调用全局变量,防止污染,还要分清作用域
#!/usr/bin/env python
def main():
f1(9, 8) #传2个值,第三个用默认的
f1(9, 8, 7) #传3个值,第三个用传的
def f1(a, b, c=10):
print(a, b, c)
main()
C:UsersAdministratorAppDataLocalProgramsPythonPython35-32python.exe C:/Users/Administrator/PycharmProjects/ACE/study3/hanshu.py
9 8 10
9 8 7
Process finished with exit code 0
#!/usr/bin/env python
def main():
#f1(9, 8) #传2个值,第三个用默认的
f1(9, 8, 7) #传3个值,第三个用传的
f1(7, [3, 5, 16, 1, 56, ]) #不带*会将列表当作一个元素传入
f1(*[3, 5, 16, 1, 56,]) #带*会将列表中的元素直接传入
def f1(*args): #可接收多个值
#print(args[0], args[1], args[2])
print(args) #args是个元组
main()
C:UsersAdministratorAppDataLocalProgramsPythonPython35-32python.exe C:/Users/Administrator/PycharmProjects/ACE/study3/hanshu.py
(9, 8, 7)
(7, [3, 5, 16, 1, 56])
(3, 5, 16, 1, 56)
Process finished with exit code 0
#!/usr/bin/env python
def main():
f1(n1=11, n2=22) #将传入的值与指定在参数作为kv
f1(n1=11, n2=22, **{'k1': 'v1', 'k2': 'v2'}) #带**就会将字典中的kv直接放入新字典中
f1(n1=11, n2=22, n3={'k1': 'v1', 'k2': 'v2'}) #不带**字典作为一个valuse放入新字典中
def f1(**kwargs): #可接收多个值
print(kwargs) #kwargs是个字典
main()
C:UsersAdministratorAppDataLocalProgramsPythonPython35-32python.exe C:/Users/Administrator/PycharmProjects/ACE/study3/hanshu.py
{'n1': 11, 'n2': 22}
{'k2': 'v2', 'n1': 11, 'n2': 22, 'k1': 'v1'}
{'n3': {'k2': 'v2', 'k1': 'v1'}, 'n1': 11, 'n2': 22}
Process finished with exit code 0
累死北方了