博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集合和文件操作
阅读量:6941 次
发布时间:2019-06-27

本文共 3691 字,大约阅读时间需要 12 分钟。

一:集合

  集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

(1)去重,把一个列表变成集合,就自动去重了。

(2)关系测试,测试两组数据之前的交集、差集、并集等关系。

二:有关集合的操作

1,增

set1 = {
'alex','wusir','ritian','egon','barry'}set1.add('景女神')print(set1)#update:迭代着增加set1.update('A')print(set1)set1.update('老师')print(set1)set1.update([1,2,3])print(set1)
View Code

2,删

set1 = {
'alex','wusir','ritian','egon','barry'}set1.remove('alex') # 删除一个元素print(set1)set1.pop() # 随机删除一个元素print(set1)set1.clear() # 清空集合print(set1)del set1 # 删除集合print(set1)
View Code

3,有关集合的其它操作

3.1   交集。(&  或者 intersection)

set1 = {1,2,3,4,5}set2 = {4,5,6,7,8}print(set1 & set2)  # {4, 5}print(set1.intersection(set2))  # {4, 5}
View Code

3.2并集。(| 或者 union)

set1 = {1,2,3,4,5}set2 = {4,5,6,7,8}print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7}print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}
View Code

3.3差集。(- 或者 difference)

set1 = {1,2,3,4,5}set2 = {4,5,6,7,8}print(set1 - set2)  # {1, 2, 3}print(set1.difference(set2))  # {1, 2, 3}
View Code

3.4反交集。 (^ 或者 symmetric_difference)

set1 = {1,2,3,4,5}set2 = {4,5,6,7,8}print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
View Code

 3.5子集与超集

set1 = {1,2,3}set2 = {1,2,3,4,5,6}print(set1 < set2)print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。print(set2 > set1)print(set2.issuperset(set1))  # 这两个相同,都是说明set2是set1超集。
View Code

3.6 frozenset不可变集合,让集合变成不可变类型。

s = frozenset('barry')print(s,type(s))  # frozenset({'a', 'y', 'b', 'r'}) 
View Code

三:文件操作

1,文件操作流程

   计算机系统分为:计算机硬件,操作系统,应用程序三部分。我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。有了文件的概念,就无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:

#1. 打开文件,得到文件句柄并赋值给一个变量f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r#2. 通过句柄对文件进行操作data=f.read()#3. 关闭文件f.close()
View Code

ps:  打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:f.close()

2, 文件编码

         f=open()是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。

3:文件的打开方式

      通过对文件句柄的操作,来得到你想要的东西,例如下:

content = f.read()print(content)f.close #将你这文件句柄,或者是动作关闭,节省内存f.close()
View Code

4,关于读的五种模式

4.1,f.read() ,全部读出来。

4.2,f.readline() 按行读。

f = open('log',encoding='utf-8')line = f.readline()print(line)line1 = f.readline()print(line1)f.close()
View Code

4.3,f.readlines() 每一行作为一个元素,放在列表中。

f = open('log',encoding='utf-8')lines = f.readlines()print(lines)f.close()
View Code

4.4,循环读取

f = open('log',encoding='utf-8')for i in f:    print(i)f.close()
View Code

4.5,f.read(n),r 模式:n 是按照字符读取

f = open('log',mode='r',encoding='utf-8')content = f.read(3)  #r 模式:n 是按照字符读取print(content)f.close()
View Code

5,w,自写模式,如果没有文件,则创建文件写内容,如果有文件则将原文件内容全部删除,再写。

f = open('log','a',encoding='utf-8')f.write('wusir紧跟其后')f.close()
View Code

 6,r+   r+b

f = open('log','r+',encoding='utf-8')print(f.read())f.write('fdsaf')f.close()
View Code

7,w+ w+b

f = open('log','w+',encoding='utf-8')f.write('aaaa')f.seek(0)  #移动光标print(f.read())f.close()
View Code

8,a+

f = open('log','a+',encoding='utf-8')f.write('aaaa')f.tell()print(f.tell())f.seek(2)# print(f.readable())# print(f.read())f.close()f = open('log',encoding='utf-8')f.seek(3)  #按照字节调整print(f.read())f.close()f = open('log','a',encoding='utf-8')f.truncate(3)  #截取 截取前面的内容f.close()
View Code

9 ,改动文件

9.1,创建一个新文件

9.2,读取原文件。

9.3,将原文件的内容通过你想要的方式进行更改,并写入新文件。

9.4,将原文件删除。

9.5,将新文件重命名原文件名。

import oswith open('log',encoding='utf-8') as f1,\    open('log.bak','w',encoding='utf-8') as f2:    for i in f1:        i = i.replace('alex','SB')        f2.write(i)os.remove('log')os.rename('log.bak','log')
View Code
 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

转载于:https://www.cnblogs.com/leiwei123/p/8385060.html

你可能感兴趣的文章
《文科生数据科学上手指南》分享
查看>>
PostgreSQL json 索引实践 - 检索(存在、包含、等值、范围等)加速
查看>>
第12章—使用NoSQL数据库—使用MongoDB+Jpa操作数据库
查看>>
ListView实现物流追踪
查看>>
05.Eclipse下Ndk开发(增量更新)
查看>>
TP5使用二维码PHP QR Code生成带LOGO和不带LOGO的二维码
查看>>
报表查询条件的正确打开方式,看到最后不禁会心一下
查看>>
捕获未处理的Promise错误
查看>>
mac-switch-meta.el
查看>>
spring源码分析(一)资源文件的加载
查看>>
基于卷积神经网络的以图搜图算法实现
查看>>
同步与异步的区别
查看>>
SQL获取上月第一天和最后一天
查看>>
填报表更新时去除重复数据
查看>>
淘宝分词怎么查看,详谈淘宝分词原则
查看>>
对于sqli-labs基础篇全程使用sqlmap不用手工注入(七夕礼物!!!)
查看>>
C++雾中风景11:厘清C++类型转换(static_cast,dynamic_cast,reinterpret_cast,const_cast)
查看>>
为什么开发人员必须要了解数据库锁?
查看>>
Lua 学习笔记(二)—— 语句
查看>>
制作自己的Vagrant Box
查看>>