day7笔记 集合,字典,文件操作

1.数据类型,补充方法
# v1 = [] # v1 = list()
# v2 = () # v2 = tuple()
# v3 = {} # v3 =dict()
# v4 = set() #{}默认是dict
# print(type(v4))

2.数据类型 set 集合
# 集合特性:元素无序,无重复
# 1.add 添加元素到集合中,如果该元素已经存在,不会重复创建。

names = {'龙哥','海角','老狗','成绩','小江','小高'}
names.add('龙哥')
print(names)

 

2.clear 清空。
3.copy , 浅拷贝
4. difference 差集。
names = {1,2,3,4,5,6}
boys = {1,7,8}
val = names.difference(boys) # names中存在,boys中不存在数据{2, 3, 4, 5, 6},boys可以为列表
print(val)
val =boys.difference(names)# boys中存在,names中不存在数据
print(val)

后面加上update就是直接赋值给boys,

boys.difference_update(names) # boys中存在,names中不存在数据
print(boys)
names.difference_update(boys) # boys中存在,names中不存在数据
print(names)

3. 对称差集,把两个集合里面互不存在的数取出来。

names = {1,2,3,4,5,6,7}
boys = {1,2,4,8,9}
val = names.symmetric_difference(boys)
print(val)
names.symmetric_difference_update(boys)
print(names)

输出:{3, 5, 6, 7, 8, 9}

4. discard在集合中删除指定值

name = {1,2,3,4,5,7,6,}
var = name.discard(6)
print(name)

5. 求交集

name = {1,2,3,4,5,6}
num = {1,2,3,4,7,8,9}
val = name.intersection(num)
print(val)
val = num.intersection(name)
print(val)
#{1, 2, 3, 4}
name.intersection_update(num)
print(name)

6. 并集

#{1, 2, 3, 4, 6, 7, 8}
name = {1,4,2,3}
num = {2,4,7,8,6}
val = name.union(num)
print(val)

7.判断是否无交集

name = {1,4,2,3}
num = {7,8,6}
val = name.isdisjoint(num)
print(val)

8. 子集父集

name = {1 ,2,3,4,5}
num = {1,2,3}
#是否是子集
val = num.issubset(name)
print(val)
#是否是父集
val = name.issuperset(num)
print(val)

9. 随机删除一个集合元素

name = {2,3,4,5}
val = name.pop()
print(val)

remove,如果删除的数找不到,会报错

name.remove(6)
print(name)

discard,如果删除的数找不到,不会报错

name.discard(6)
print(name)

10. 更新

name = {1,2,3,4,5}
num = {1,2,3,7,8}
num.update(name)
print(num)
#{1, 2, 3, 4, 5, 7, 8}

for 循环:

names = {'龙哥','海角','老狗','成绩','小江','小高'}
for item in names:
    print(item)

print(len(names))

ps:集合元素不可变 ;不能是字典 列表,集合。

dict

 

1.clear , 清空

 

2.copy , 浅拷贝

 

3.fromkeys, 内部修改。

#{'k1': [678, 999], 'k2': [678, 999], 'k3': [678, 999]}
val = dict.fromkeys(['k1','k2','k3'],[])
val['k1'].append(678)
val['k2'].append(999)
print(val)

4.get,获取对应Key的 value值.得不到会输出None。

5.items,获取对应的键值对,多和for循环一起用,前面需要两个变量接收值。

6.keys,获取对应的key值,多和for循环一起用

7.pop,取出key对应的value值赋给ss,并删除key这个键值对,如果没有对应的key则赋给ss,默认值。

name = {"key1":1,"key2":2}
ss = name.pop("key","默认值")
print(ss)

8.popitem,随机取出一个键值对

name = {"key1":1,"key2":2}
ss,vv = name.popitem()
print(ss,vv)

9.setdefault,只能添加,不能修改

dic = {'k1':'v1','k2':'v2'}
dic.setdefault('k2','999')
print(dic)
#设置:添加,修改
dic['k2'] = 999

10.update,更新

dic = {'k1':'v1','k2':'v2'} # dict类的一个对象
dic.update({'k4':'v4','k2':'v5'})
print(dic)

文件操作
# 读取utf-8编码数据,【转换】成unicode(str)编码的数据

msg = open("文件路径",encoding="utf-8",mode="r")
content = msg.read()
msg.close
print(content)#字符串类型

1.文件在硬盘上时,一定是:utf-8,gbk,..
2.rb , bytes,
3.r , 转换encoding = utf-8

obj = open('美女.txt',mode='r+',encoding='utf-8')
data = obj.read(1) # 读

# 情况一:
# obj.write('6') # 在最后继续写
# 情况二:
# obj.seek(1)
# obj.write('6') # 定位到指定位置
obj.close()
print(data)

操作文件三要素:
1. 路径:D:\美女模特空姐护士联系方式.txt
2. 编码:utf-8
3. 模式:
- rb
- r
- r+ *****
- r+b
- wb
- w
- w+
- w+b
- ab
- a
- a+
- a+b

功能:
obj = open(文件路径,mode='rb')
obj.read()
obj.write()
obj.seek() # 永远是字节,指定指针位置
obj.tell() # 读取当前指针的位置
obj.close()
obj.flush() #将内存中内容刷到硬盘
# obj.readline()
for line in obj: # 等价于 py2 obj.xreadlines()
print(line)
obj.readlines()

PS: 打开文件后,记着关闭文件
obj = open(文件路径,mode='rb')
xxxx
obj.close()

自动关闭

with open(文件路径,mode='rb') as obj:
obj.read()
# 代码执行完毕后,自动关闭文件

 

 

只读:
- open(文件路径,mode='rb')
- open(文件路径,mode='r',encoding='utf-8')

示例:

obj = open('D:\美女模特空姐护士联系方式.txt',encoding='utf-8',mode='r')
content = obj.read()
obj.close()
print(content)
obj = open('D:\美女模特空姐护士联系方式.txt',mode='rb')
content = obj.read()
obj.close()
print(content)

只写:
- open(文件路径,mode='wb')
- open(文件路径,mode='w',encoding='utf-8')

示例:
# obj = open('美女.txt',mode='w',encoding='utf-8')
# obj.write("海角-贾敏")
# obj.close()

# obj = open('美女.txt',mode='wb')
# obj.write("海角-贾敏22222".encode('utf-8'))
# obj.close()

只追加:
- open(文件路径,mode='ab')
- open(文件路径,mode='a',encoding='utf-8')

# obj = open('美女.txt',mode='a',encoding='utf-8')
# obj.write("小红")
# obj.close()

# obj = open('美女.txt',mode='ab')
# obj.write("龙哥".encode('utf-8'))
# obj.close()

 

posted @ 2017-08-24 22:09  mendax  阅读(72)  评论(0)    收藏  举报