python学习之路day4

书中自有黄金屋,书中自有颜如玉



集合是一个无序的不重复的数据组合,它的主要作用如下:

去重:把一个列表变成集合,就自动去重了

关系测试:测试两组数据之前的交集、差集、并集等关系

基本操作:

s = set([3,5,9,10]) #创建一个数值集合   自动去重了

t = set("Hello") #创建一个唯一字符的集合

a = t | s # t 和 s的并集

b = t & s # t 和 s的交集  或者写成 b = t.intersection(s)

c = t – s # 求差集(项在t中,但不在s中)  或者写成 c = t.difference(s)

d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)  并集减去交集

list1.issubset(list2)  #若list1是list2的子集,返回True

lsit2.issupperset(list1)  #若list2是list1的父集, 返回True



小知识点:

list_1.isdisjoint(list_2) #若list_1与list_2无交集,返回True



基本操作:

t.add(‘x‘) # 添加一项

s.update([10,37,42]) # 在s中添加多项 ( 注意update多项元素用中括号【】)

使用remove()可以删除一项:  如果()在集合里不存在,则报错;而discard()则返回None

t.remove(‘H‘)

len(s)
set 的长度



不论字符串,字典,列表,集合等都是一下格式来进行判断
x in s
测试 x 是否是 s 的成员

x not in s
测试 x 是否不是 s 的成员



s.issubset(t)
s <= t
测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)
s >= t
测试是否 t 中的每一个元素都在 s 中

s.union(t)
s | t
返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)
s & t
返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)
s - t
返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)
s ^ t
返回一个新的 set 包含 s 和 t 中不重复的元素

s.copy()
返回 set “s”的一个浅复制



文件操作

思想:打开>>操作>>关闭



小知识点:在windows下打开文件默认编码格式为GBK,而python默认编码为unicode(utf-8),因此在用open()打开文件时不输入encoding="utf-8"就会处理不了GBK格式文件

f=open(‘文件名‘,encoding=‘utf-8‘) # f就是文件内存对象(文件句柄)



文件的写入

f=open(‘文件名‘,encoding=‘utf-8‘) #f就是文件内存对象

PS:完整格式为

f=open(‘文件名‘,‘r‘,encoding=‘utf-8‘)  #  "r", "w", "a"   (read, write, append)

"w"为创建新的文件并将写入的内容覆盖掉原本的文件内容!也可以写入,格式:f.write("--------")

"a"为追加内容,写入的内容不覆盖原来的文件内容,写入格式:f.write("----------")



文件的读取
data=f.read() #data已经“读完了”一遍文件,光标已经指向最末位
data2=f.read() #data2为空值,因为data已经“读完了”一遍文件,光标已经指向最末位,再次读取当然是空值了

print(f.tell())  #打印当前光标的位置,按读了的字符计数f.seek(0)  #光标又移动到0    ###seek()即为光标的跳转print(f.readline())  #打印第一行

f.readline()仅仅是一行内容,f.readlines()则是把所有内容按行形成列表,形如[‘111111------------\n‘, ‘222222------------\n‘],

f.readline()只适合读小文件,大文件要加载很长时间(整个文件全部放在内存里)

解决方法:内存中只保存一行数据,读一行删一行

low loop :

for index, line in enumerate(f.readlines()):    if index!= 9:  #不打印第十行        print(line.strip())  #虽然去掉了换行(\n),但是是一句句打印的也可这样写:
for index, line in enumerate(f.readlines()):    if index == 9:        print(‘------我是分割线-------‘)        continue    print(line.strip())

High bige:效率最高,内存中只保存一行数据

f=open(‘yesterday‘,‘r‘,encoding=‘utf-8‘)for line in f:  #这里的f不是列表,迭代替    print(line)

对第十行进行特别的操作:
f=open(‘yesterday‘,‘r‘,encoding=‘utf-8‘)count=0for line in f:    count +=1    if count == 10 :        print(‘------我是分割线------‘)    print(line.strip())

print(f.encoding)  #打印文件的编码(utf-8还是别的)

f.flush()  #把之前写入的数据(实际上存在缓存里)实时刷新写到硬盘里

进度条(伪?):结果是#一个个出现

import  sys, timefor i in range(20):    sys.stdout.write("#")    sys.stdout.flush()    time.sleep(0.1)

f.closed 判断是否关闭 返回True or False

f=open(‘yesterday2‘,‘a‘,encoding=‘utf-8‘)  #注意这里是‘a‘,若为‘w‘肯定覆盖了原文件#f.truncate()  #不写就把文件yesterday2清空f.truncate(10)  #从头开始截断不论光标在什么位置

既能读又能写:读写模式:“r+” 最常用
f=open(‘yesterday2‘,‘r+‘,encoding=‘utf-8‘)  #以读和追加(从最后开始追加)的模式打开,不论光标在什么位置
写读模式:“w+”追加读写:“a+”

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a
  • rb,打开二进制文件(视频)
  • 同理有wb,ab
f.write("hello\n".encode()) #把字符串转换成二进制再进行写入

对文件进行修改1.将文件加载到内存里,在内存里修改完后写回原文件;(在硬盘里修改的话只能覆盖原文件的内容。)2.打开文件,修改后存到新的文件思路:同时打开两个文件,一个读,一个写
f = open("yesterday2",‘r‘,encoding=‘utf-8‘)

f_new = open("yesterday2.new.",‘w‘,encoding=‘utf-8‘)

for line in f :    #对每一行逐一查找并写入到f_new    if "肆意的快乐等我享受" in line :        line=line.replace("肆意的快乐等我享受","肆意的快乐等Alex享受")                #old          new    f_new.write(line)  # 写入 line 到 f_new这个文件对象f.close()f_new.close()

知识点:sys.argv[number]用于传递参数Sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始比如上例把old和new设成参数:目前还不太清楚怎么弄QAQ
import sysf = open("yesterday2",‘r‘,encoding=‘utf-8‘)

f_new = open("yesterday2.new.",‘w‘,encoding=‘utf-8‘)find_str=sys.argv[1]replace_str=sys.argv[2]

for line in f :    #对每一行逐一查找并写入到f_new    if find_str in line :        line=line.replace(find_str,replace_str)                #old    new    f_new.write(line)  # 写入 line 到 f_new这个文件对象f.close()f_new.close()


with 用法用来自动关闭文件(防止你忘记关闭)

with open("yesterday2",‘r‘,encoding=‘utf-8‘) as f:-----------------------------------------------------
f = open("yesterday2",‘r‘,encoding=‘utf-8‘)-----------------------------------------------------
效果相同,但是with语句不用输入f.close(),并且with可以同时打开多个文件:with open(‘log1‘) as obj1, open(‘log2‘) as obj2:

一点代码规范:代码的换行  ,\
with open("yesterday2",‘r‘,encoding=‘utf-8‘) as f,\        open("yesterday2",‘r‘,encoding=‘utf-8‘) as f2:



				
时间: 2024-10-10 04:14:01

python学习之路day4的相关文章

Python学习之路--Day4

本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.迭代器&生成器 生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了. 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的l

python 学习之路-day4

今天夏至好热........ python结构数据类型:元组(tuple).列表(list).字典(dict) 元组的基本形式是以“()”括起来的数据元素,它也可以通过序号来引用其中的元素. >>>()      #创建空元组 >>>tuple ()  #创建空元组 >>>(1,) >>>1,2  #直接用逗号隔开两个值,可以创建一个元组 (1,2) 注意:建立只有一个元素的元组,元素后要有一个“,”. 列表是最常见的一种数据形式,列

python学习之路-day4.1

装饰器需要了解以下三点知识: 1.函数即变量: 2.高阶函数: 3.嵌套函数: 所以首先先普及一下知识点: 变量定义x = 1,数据1读取到内存中,可以理解为存到一房间中,而x表示房间号: 函数定义,函数体部分读取到内存中,而函数名表示房间号: def test(): print("in the test func") 所以本质上函数即变量 函数 匿名函数 匿名函数关键字lambda,一般的函数定义为def foo():会定义名字,匿名函数表示方式: calc = lambda x:x

Python学习之路-Day1-Python基础

Python学习之路第一天 学习内容: 1.Python简介 2.安装 3.第一个Python程序 4.变量 5.字符编码 6.用户输入 7.表达式if..else语句 8.表达式for语句 9.break和continue 10.while循环 11.字符串格式化 1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOB

Python学习之路

Python学习之路 目录 Python学习之路[第一篇]:流程控制,用户交互,语法要求,变量,字符,注释,模块导入的使用 Python学习之路[第二篇]:文件,字符串,列表,元组,字典,集合的使用 更新中...

Python学习之路-装饰器&生成器&正则表达式

装饰器 通俗的讲,装饰器就是在不改变源代码基础上,给源代码增加新功能. 不改变函数的源代码.调用方式.返回值等,给函数增加新功能. 经典案例:登录装饰器, def login_decorator(func):     def inner():         if USER_TEMP["status"] == False:             print("\033[31;1m用户未登录,请先登录\033[0m")             login_atm()

Python学习之路【第一篇】-Python简介和基础入门

1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是一种开发语言,而且已经进阶到主流的二十多种开发语言的top 5(数据源自最新的TIOBE排行榜). 来头不小啊!二十多种主流的开发语言,我该从哪一个开始呢?人生苦短,let‘s python! 1.2 Python的由来和发展趋势 Python的前世源自鼻祖“龟叔”.1989年,吉多·范罗苏姆(Gu

Python学习之路——强力推荐的Python学习资料

资料一:程序媛想事儿(Alexia)总结 Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用.它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务. Python上手虽然容易,但与其它任何语言一样要学好Python并非一日之功.我的Pyth

Python学习之路 001

Python学习之路 从今天起开始写Python学习的经历了,哈哈. 了解Python是在我想入坑Linux运维这条路开始的. 我是计算机出身有着一定编程的功底,刚开始接触Python的时候觉得Python我学习过的c,c++特性完全不一样.觉得为什么这东西会这么智能 就拿Hello World来说 C: 1 #include<stdio.h> 2 3 void main() 4 { 5 printf("Hello World"); 6 } C++: 1 #include&