博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 3 学习笔记(三)----数据运算、集合操作和文件操作
阅读量:5088 次
发布时间:2019-06-13

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

一、数据运算

算数运算:

赋值运算:

比较运算:

身份运算:

成员运算:

逻辑运算:

位运算:

运算符优先级:

二、集合操作

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

  • 去重,把一个列表变成集合的时候就已经自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集的关系
1 print("-----------关系测试-------------") 2 list_A = [1,3,5,7,7,8,9] 3 list_A = set(list_A) #将列表转化为集合 4 list_B = set([0,2,4,5,6,8,9]) 5 print(list_A,type(list_A))  #集合会自动的去重 6  7 print(list_A,list_B) 8  9 #交集10 print(list_A.intersection(list_B))11 print(list_A & list_B)12 13 #并集14 print(list_B.union(list_A))15 print(list_B | list_A)16 17 #差集18 print(list_A.difference(list_B))  #在list_A中有,但是list_B中没有19 print(list_A - list_B)20 21 #子集22 print(list_A.issubset(list_B)) #判断list_B是否为list_A的子集23 print(list_A.issuperset(list_B))  #判断list_A是否为list_B的父集24 25 #对称差集26 print(list_A.symmetric_difference(list_B)) #取两个集合中互相都没有的27 print(list_B ^ list_A)28 29 list_C = set([22,33,44])30 print(list_B.isdisjoint(list_C)) #判断两个集合是否不相交,如果不相交返回为True
1 print("---------集合操作-----------") 2 list_A.add(444)  #添加数值 3 list_B.add("hahaha")   #添加字符串 4 print(list_B,list_A) 5 list_C.update(([66,77,88]))  #批量添加 6 print(list_C) 7  8 list_A.remove(444) #删除指定的项 9 list_A.pop()  #随机删除list_A中的一个项10 list_A.discard(999)  #用discard删除一个不存在的项不会报错,用remove删除不存在的项会报错11 print(list_A)12 13 3 in list_A  #测试3是否为list_A的成员。列表、元组、字典、集合都是这种操作

三、文件操作

文件的读与写:

1 f = open("地狱少女","r",encoding="UTF-8")   #r代表read表示读取、w代表write表示写入(新建、覆盖)、a代表append表示追加 2 data = f.read() 3 data2 = f.read() 4  5 print(data) 6 print("--------------",data2)   #此处data2打印为空是因为第一次打印data的时候已经重头度到尾,data2打印从尾开始所以没有数据 7  8 f.close()  #关闭文件 9 10 11 f1 = open("地狱少女1","w",encoding="UTF-8")   #write是创建一个新文件,如果打开的文件名没有的话就新建一个,如果已有的话就覆盖12 f1.write("因为要消除怨恨,\n所以要流放别人到地狱")13 print(f1)14 15 f1.close()16 17 18 f2 = open("地狱少女","a",encoding="UTF-8")   #append只能追加不能read19 f2.write("因为要消除怨恨,\n所以要流放别人到地狱")20 print(f2)21 22 f2.close()

文件的常用操作:

1 #f = open("地狱少女","r",encoding="UTF-8") #文件句柄 2 #print(f.readline())    #readline为按行读取 3 #print(f.readline()) 4  5  6 #读取前五行的数据 7 #for i in range(5): 8 #    print(f.readline()) 9 10 11 #print(f.readlines()) #将文件转换为一个列表12 13 14 f = open("地狱少女","r",encoding="UTF-8") #文件句柄15 print(f.tell())  #查找当前指针所在位子,这个位子是字符所在的位子16 print(f.read(5)) #读取5个字符,一般不用,因为不知道结束时语句是否完整17 f.seek(0)  #使指针回到起始位置18 print(f.isatty())  #判断是否为一个终端设备19 print(f.seekable())  #判断指针是否能够返回原位20 print(f.readable())   #判断文件是否可读21 print(f.writable())   #判断文件是否可写22 23 print(f.flush())   #强制刷新(在一些对于时效性很强的情况下使用,例如取款程序)24 25 #print(f.truncate(10)) 是截断,如果不写相当于清空,输入数字代表从头开始第10个字符开始截断。truncate只适用于"append"

文件修改:

1 f = open("地狱少女","r+",encoding="UTF-8")   #r+为读写,先读后写,常用 2  3 print(f.readline()) 4 print(f.readline()) 5 print(f.readline()) 6 print(f.tell()) 7 f.write("------------------------------") 8 print(f.readline()) 9 10 11 f = open("地狱少女1","w+",encoding="UTF-8")    #w+为写读,先写后读,先创建一个文件再读,不常用12 13 f.write("----------------------------1\n")14 f.write("----------------------------1\n")15 f.write("----------------------------1\n")16 print(f.tell())17 f.seek(10)18 print(f.readline())19 f.write("I am Irlo.")    #这里的写入也是添加到最后一行20 f.close()21 22 f = open("地狱少女1","a+",encoding="UTF-8")    #a+为追加读,不常用23 '''24 25 #f = open("地狱少女","rb")    #二进制文件读,网络传输只能用二进制模式26 f = open("地狱少女2","wb")   #二进制文件写27 f.write("Hello Irlo\n".encode())

with语句:

1 #f = open("车","r",encoding="UTF-8") 2  3 with open("车","r",encoding="UTF-8") as f:   #用with打开文件执行后会自动关闭,避免打开文件忘记关闭 4 #print(f.readline()) 5 for line in f: 6   print(line.strip()) 7  8  9 #python2.7之后with可以同时打开多个文件10 with open("123","r",encoding="UTF-8") as f1,open("456","r",encoding="UTF-8") as f2:11     pass12 13 ###python的开发规范:一行代码不要超过80个字符,所以这里一般书写为14 with open("123","r",encoding="UTF-8") as f1,\15      open("456","r",encoding="UTF-8") as f2: #可清晰看出打开两个文件

例1.循环打印直到第10行停止,修改第十行数据后继续打印

老方法(不推荐):

1 f = open("地狱少女","r",encoding="UTF-8") #文件句柄2 3 4 for index,line in enumerate(f.readlines()):  #f.readlines 需要先转换成列表,效率低有局限性,只有在小文件的情况下使用5     if index == 9:6         print("-------------------")7         continue8     print(line.strip())   #strip会去掉空格和换行

不占内存的方法:

1 f = open("地狱少女","r",encoding="UTF-8") #文件句柄 2  3 count = 0 4 for line in f:          #迭代器,内存中只保存一行的数据 5     if count == 9: 6         print("-----------------")        #"-------"代替了第十行的数据 7         count +=1 8         continue 9     print(line)10     count +=1

例2. 进度条

1 import sys,time2 3 for i in range(15):4     sys.stdout.write("#")   #stdout是标准输出,一般指输出到显示器上5     sys.stdout.flush()6     time.sleep(0.1)

附件.地狱少女

1 怨恨: 2 在地狱少女(第一季)第八集,柴田一尝试登入“地狱通信”而失败,可见“地狱通信”的登入是有条件的。而从不同集数中大部分成功登入的人,都有着一个比较相似的共通点,在故事中称为“怨恨”。怨恨程度如何往往是影响着故事发展的关键因素之一,但是动画中“怨恨”定义不明。以下是分类整理。 3 因陷害而致的怨恨: 4 有一些人因为被人陷害,例如地狱少女(第一季)第三集的受诅人花笠守将委托人岩下大辅之好友杀死,却把杀人的责任推到岩下大辅,[14]于是岩下大辅有所怨恨,要流放受诅人。 5 因为重要他人被伤害引致的怨恨: 6 于地狱少女(第一季)第四集中,就有委托人心爱之狗被医生延误诊治、间接害死。之后一集,就是因为委托人父亲被杀,才有流放地狱一事。在动画中,委托人心伤时有时也展示出其与重要的人事感情深厚的表现,以说明其重要性。 7 因为满足个人欲望而引发怨恨: 8 例如第一季第七集,委托人红彩花(同时是受诅人)为了得到遗产,就要流放养母到地狱。二笼二十四集委托人甚至清楚说明流放别人就是为满足欲望。 9 因为“背叛”而引致的怨恨:10 受诅人的怨恨也是影响着故事的发展。在地狱少女(第一季)第九集中,受诅人因为委托人姐姐“背叛”了自己,于是便陷害委托人姐姐和委托者,引发委托人的“怨恨”。不过“背叛”未必容易理解。似乎在故事中的说法是,一方不接受另一方的感情,导致对方怨恨。另见第一季第二集的受诅人,情况类似。11 为了他人利益而导致怨恨:12 为了不让其他人损失权益,如财产、生命,而把受诅人送进地狱,这种怨恨完全取自于委托人的个人良心和感同身受。如二笼第十六集,委托人为了不让其他人像她一样,被受诅人欺骗、陷害致死,再临死前解开红线,将受诅人送入地狱,但随后死亡,蜡烛熄灭。13 因为不明原因而引致的怨恨:14 有时候故事中未必展示出一些被认为是招人怨恨之事,例如在地狱少女第一季第二十三集中,受诅人(一名女护士)所展示的就只有好的一面,但是从受诅人流放到地狱、及“地狱通信”所言“我们将为你消除怨恨”中,可以看到,在故事中而言“怨恨”被消除了。这种“怨恨”虽然依故事所言是存在着,却缺乏有力的前因去理解它为何存在。15 与一般理解可能不同的怨恨:16 一般对怨恨的概念是包含憎恶情绪的,在故事中却未必时时认同此概念,有时甚至是相反。如第一季第十二集中,委托人和受诅人互相原谅和体谅对方,照一般理解就应该无所怨恨,委托人却流放对方到地狱;二笼第二十集中,受诅人主动帮助委托人解开红线,就是为了陪伴对方进入地狱。17 因多管闲事而被怨恨:18 当一个人担心对方想帮他解决事情,但对方要求不要多管闲事,但对方却硬要帮忙而导致被对方怨恨。如三鼎第七集中,受诅人看不惯委托人母亲不负责任的行为。以同学身份劝委托人说出来并打算告诉老师,委托人要求对方不要多管闲事,但受诅人还是坚持要管。然而委托人为了保护这个“看似不幸的幸福”而选择流放受诅人。19 为了封口而怨恨:20 为了要保护自己的名声或利益,理应会对伤害自己的人而怨恨才对,但有时是为了封口,甚至连曾对自己好的人而怨恨。三鼎第14集中,委托人因为别人恶意流放自己和受诅人并行的亲蜜谣言,但委托人只是受到对方的好心帮助而成为朋友。起初委托人是要流放恶意散拨照片的人,但却不知该对象的名子。之后发现受诅人因犯罪而被逮捕,为了不让谣言扩大而选择流放曾帮助过自己的受诅人。21 须要说明的是,故事中的怨恨未必只是上述一种意义而已,有时可能是多种的混合。

 附件.车

1 洛天依《车》 2 有一块方向盘 3 却总在左摇右晃 4 这两根安全带 5 挡不住遍体鳞伤 6 透明般的车窗 7 看不清内心所想 8 这就是 车的一生 9 10 有洪亮的喇叭11 却没有想说的话12 有明亮的目光13 看不见路边鲜花14 星星为我导航15 却不知我要去哪16 这就是 车的一生17 18 我动荡的雨刷19 避不开风吹雨打20 舒适的皮座驾21 不是任何人的家22 内心燃烧爆炸23 对外尽量不喧哗24 这就是 车的一生25 26 藏着唱片几盒27 不知我想听的歌28 与你共赴山河29 独处时安静沉默30 远看车载着你31 近看是你开着车32 这就是 我的一生33 34 我洪亮的喇叭35 替你说想说的话36 我动荡的雨刷37 遮挡你风吹雨打38 至少在这路上39 请把这里当做家40 请珍惜 你的一程41 交给你 我的一生

 

转载于:https://www.cnblogs.com/consort/p/7309703.html

你可能感兴趣的文章
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Windows10 下Apache服务器搭建
查看>>
HDU 5458 Stability
查看>>
左手坐标系和右手坐标系
查看>>
solr后台操作Documents之增删改查
查看>>
http://yusi123.com/
查看>>
文件文本的操作
查看>>
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
akka之种子节点
查看>>
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>