python基础三(集合、文件)
1、集合定义
集合天生能去重,且与字典一样,无序。集合用大括号括起来,里面的元素之间用逗号分隔,要跟字典区分开。
集合定义方法:s=set() #定义一个空集合
s={'1','a','b','c','d','e','f'}#直接定义一个集合
s=set('123dfdreerewrewr')#将一个字符串转化为集合
s=set(['a','b','c','d'])#将一个list转化为集合
2、交集、并集、差集
取交集:& 或者intersection
print(s1 & s2) #取交集
print(s1.intersection(s2)) #取交集
取并集:| 或者union
print(s1|s2)
print(s1.union(s2))
取差集
print(s1-s2)#取差集,s1中去掉s2重复的部分
print(s1.difference(s2))#
对称差集
print(s1^s2)#去掉两个集合的交集,剩下的
print(a.symmetric_difference(b))
3、集合操作:增删改查
s.add('ss') #加元素
s.pop()#随机删一个
s.remove('ss')#指定删除哪个
s.update({1,2,3}) #把另外一个集合加进去
s.isdisjoint(s5)#如果没有交集的话返回true
4、文件操作
1、文件打开open
f=open(‘文件名’,''打开方式,'字符编码')
例:f = open('names','a+',encoding='utf-8'),python默认是gbk编码,open打开文件,如果不写打开方式,默认是r只读方式
文件打开有三种模式:读模式r,写模式w,追加模式a,另还有三种附加模式,加上"+" 表示可以同时读写某个文件
r,只读模式(默认)。
w,只写模式。不可读;不存在则创建;存在则删除内容;
#只要沾上了r,文件不存在的就会报错
#只要沾上了w,都会清空原来的内容
2、读取文件
f.read()#读文件,会将文件内容一次性全部读取出来
f.readline()#逐行读取,每次读一行,读取后文件句柄自动移到下一行,每次读取的内容都是一个字符串,如果有换行符,可以用字符串的strip方法;strip('\n')
f.readlines()#将文件所有内容按行放到list中,每个元素后都会自动加上\n.例:['1212sf\n', 'sdfdsffdfdfd\n', '33434312121212121223']
f.seek(0)#句柄移动到文件最开始0位置,括号里填几,句柄就移动到第几个字符
f.tell()#记录指针的位置,可以和seek联合使用
比如:操作一会文件后用point=f.tell 保存文件当前位置,然后下次再次才做,可以用f.seek(point)将指针定位到上一次的位置,接着上一次的位置继续
注意:seek()可以移动指针,但是只限于读管用,如果文件是以a+的模式打开的,即便seek(0)指针移动到最开始位置,在写文件内容时,还是会在最后面写
例子:
# 文件指针:
# 用来记录文件到底读到哪里了
f = open('name','a+',encoding='utf-8')# a模式的文件指针是在末尾的
f.write('呵呵呵')#如果写的内容要换行显示,可以加上'\n' :f.write('dfdf'+'\n'),读取文件时去掉\n可以用字符串的strip('\n')
f.seek(0) #移动文件指针到最前面
f.write('seek操作后,写的内容') #移动完文件指针之后,是只能读,写的时候还是在文件末尾写,此时也就是指针自动又到了末尾
print(f.read())#这时是读不出来内容的,因为指针在最后。如果没有上一行的f.write().则会读取文件的完整内容
循环读取文件,也可用for line in file,此时返回的是file的每一行,格式是字符串。可对line用字符串的相关函数继续操作。读完一行会释放一行的内存。
文件读写判断:
f.readable()#判断文件是否可读
3、关闭文件
f.close() 每次用open打开文件后,文件是不会自动关闭的,需要手动close下。这样有时候会忘记关闭,占内存。
with open('geci','a+') as f:#打开文件,文件不用时自动关闭
4、写文件
f.write();#往文件写内容
f.writelines(['111','222'])#往文件写多个内容,比如list,元祖,集合等
5、random模块
使用random模块必须先引入import random
print(random.randint(1,9999))#获取随机的1-9999之间的数字
random.shuffle(list)#打乱list的顺序,只能用于list
最新文章
- MCU的四个功能
- memcache内存分配机制
- nrf51822-广播模式
- js 下载文件 window.location.href
- php使用swoole实现一个简单的多人在线聊天群发
- linux系统灵活运用灯[android课程3]
- 一个java文件编译之后会产生多个class文件
- Unity3D 解决c#脚本乱码
- Android 快速选择联系人
- poj3694(tarjan缩点+lca)
- pgadmin3 新建服务器出现错误 Peer authentication failed for user ";postgres"; 的解决办法
- 将meteor部署到自己的服务器(deploy meteor to your own server)
- font-family
- java爬虫框架webmagic学习(一)
- input标签之外是否一定添加form标签
- 51nod 1277 字符串中的最大值
- 八 原型prototype和__proto__
- UIKit 框架之UIView一
- java 方法重写和属性重写
- Cocoapods更改安装版本及卸载、ruby版本检测和安装
热门文章
- ALGEBRA-3 线性映射
- css如何让子元素在父元素中水平垂直居中
- mysql-5.7.xx在lcentos7下的安装以及mysql在windows以及linux上的性能差异
- 【算法•日更•第三十期】区间动态规划:洛谷P4170 [CQOI2007]涂色题解
- css3 属性 text-overflow 实现截取多余文字内容 以省略号来代替多余内容
- cinder migrate基础内容-1
- Linux时间同步服务chrony
- Logistic回归分析之二元Logistic回归
- 从零开始的SpringBoot项目 ( 四 ) 整合mybatis
- os.path获取当前路径及父路径