一、列表的增删改查
1.添加元素
- append:在末尾添加元素
- insert:在指定位置插入元素
- extend:合并两个列表
append: append会把新元素添加到列表末尾 #定义变量A,默认有3个元素 A = ['xiaoWang','xiaoZhang','xiaoHua'] print("‐‐‐‐‐添加之前,列表A的数据‐‐‐‐‐A=%s" % A) #提示、并添加元素 temp = input('请输入要添加的学生姓名:') A.append(temp) print("‐‐‐‐‐添加之后,列表A的数据‐‐‐‐‐A=%s" % A) insert: insert(index, object) 在指定位置index前插入元素object strs = ['a','b','m','s'] strs.insert(3,'h') print(strs) # ['a', 'b', 'm', 'h', 's'] extend: 通过extend可以将另一个列表中的元素逐一添加到列表中 a = ['a','b','c'] b = ['d','e','f'] a.extend(b) print(a) # ['a', 'b', 'c', 'd', 'e', 'f'] 将 b 添加到 a 里 print(b) # ['d','e','f'] b的内容不变
2.修改元素
- 通过下表访问列表元素,修改列表是,为指定列表下表赋值就行
#定义变量A,默认有3个元素 A = ['xiaoWang','xiaoZhang','xiaoHua'] print("‐‐‐‐‐修改之前,列表A的数据‐‐‐‐‐A=%s" % A) #修改元素 A[1] = 'xiaoLu' print("‐‐‐‐‐修改之后,列表A的数据‐‐‐‐‐A=%s" % A)
3.查找元素
- 查找即查看指定元素是否否存在,使用in,not in
#待查找的列表 nameList = ['xiaoWang','xiaoZhang','xiaoHua'] #获取用户要查找的名字 findName = input('请输入要查找的姓名:') #查找是否存在 if findName in nameList: print('在列表中找到了相同的名字') else: print('没有找到')
4.删除元素
- del:根据下标进行删除
- pop:删除最后一个元素
- remove:根据元素的值直接删除
#del movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情'] print('‐‐‐‐‐‐删除之前‐‐‐‐‐‐movieName=%s' % movieName) del movieName[2] print('‐‐‐‐‐‐删除之后‐‐‐‐‐‐movieName=%s' % movieName) #pop movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情'] print('‐‐‐‐‐‐删除之前‐‐‐‐‐‐movieName=%s' % movieName) movieName.pop() print('‐‐‐‐‐‐删除之后‐‐‐‐‐‐movieName=%s' % movieName) #remove movieName = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情'] print('‐‐‐‐‐‐删除之前‐‐‐‐‐‐movieName=%s' % movieName) movieName.remove('指环王') print('‐‐‐‐‐‐删除之后‐‐‐‐‐‐movieName=%s' % movieName)
二、字典
1.查看元素
- 除了使用key查找数据,还可以使用get来获取数据
info = {'name':'班长','age':18} print(info['age']) # 获取年龄 # print(info['sex']) # 获取不存在的key,会发生异常 print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常 print(info.get('sex','男')) # 获取不存在的key, 可以提供一个默认值
2.修改元素
- 字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
info = {'name':'班长', 'id':100} print('修改之前的字典为 %s:' % info) info['id'] = 200 # 为已存在的键赋值就是修改 print('修改之后的字典为 %s:' % info) #修改之前的字典为 {'name': '班长', 'id': 100} #修改之后的字典为 {'name': '班长', 'id': 200}
3.添加元素
- 如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
info = {'name':'班长'} print('添加之前的字典为:%s' % info) info['id'] = 100 # 为不存在的键赋值就是添加元素 print('添加之后的字典为:%s' % info) #添加之前的字典为:{'name': '班长'} #添加之后的字典为:{'name': '班长', 'id': 100}
4.删除元素
- del
#demo:del删除指定的元素 info = {'name':'班长', 'id':100} print('删除前,%s' % info) del info['name'] # del 可以通过键删除字典里的指定元素 print('删除后,%s' % info) #删除前,{'name': '班长', 'id': 100} #删除后,{'id': 100} #del删除整个字典 info = {'name':'monitor', 'id':100} print('删除前,%s'%info) del info # del 也可以直接删除变量 print('删除后,%s'%info) #删除前,{'name': 'monitor', 'id': 100} #Traceback (most recent call last): #File "", line 1, in #NameError: name 'info' is not defined
- clear
info = {'name':'monitor', 'id':100} print('清空前,%s'%info) info.clear() print('清空后,%s'%info) #清空前,{'name': 'monitor', 'id': 100} #清空后,{}
5.字典的遍历
#遍历字典的key键 dict={'name':'zhangsan','sex':'m'} for key in dict.keys(): print (key) #name #sex #遍历字典的value值 dict={'name':'zhangsan','sex':'m'} for value in dict.values(): print (value) #zhangsan #m #遍历字典的项(元素) dict={'name':'zhangsan','sex':'m'} for item in dict.items(): print (item) #('name', 'zhangsan') #('sex', 'm') #遍历字典的key-value(键值对) dict={'name':'zhangsan','sex':'m'} for key,value in dict.items(): print ("key=%s,value=%s"%(key,value)) #key=name,value=zhangsan #key=sex,value=m
三、文件
1.文件的打开与关闭
①打开/创建
- 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件路径,访问模式) 示例如下:
- f = open('test.txt', 'w')
说明:
文件路径
- 绝对路径:指的是绝对位置,完整地描述了目标的所在地,所有目录层级关系是一目了然的。 例如: E:python ,从电脑的盘符开始,表示的就是一个绝对路径。(是反斜杠!!!)
- 相对路径:是从当前文件所在的文件夹开始的路径。 (是正斜杠!!!)
- test.txt ,是在当前文件夹查找 test.txt 文件
- ./test.txt ,也是在当前文件夹里查找 test.txt 文件, ./ 表示的是当前文件夹。
- ../test.txt ,从当前文件夹的上一级文件夹里查找 test.txt 文件。 ../ 表示的是上一级文件夹
- demo/test.txt ,在当前文件夹里查找 demo 这个文件夹,并在这个文件夹里查找 test.txt 文件。
访问模式
f = open('test.txt', 'w') f.write('hello world, i am here!n' * 5) f.close()
②关闭文件
- 语法:文件.close
# 新建一个文件,文件名为:test.txt f = open('test.txt', 'w') # 关闭这个文件 f.close()
2.文件的读写
①写数据
- 使用write()可以完成向文件写入数据
f = open('test.txt', 'w') f.write('hello world, i am here!n' * 5) f.close()
- 注意:如果文件不存在,则创建;如果存在就先清空,然后写入
②读数据
- read读取:使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入 num,那么就表示读取文件中所有的数据
f = open('test.txt', 'r') content = f.read(5) # 最多读取5个数据 print(content) print("‐"*30) # 分割线,用来测试 content = f.read() # 从上次读取的位置继续读取剩下的所有的数据 print(content) f.close() # 关闭文件,这个可是个好习惯哦 #hello #‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ #world, i am here!
- readline读取:只能读取一行数据
f = open('test.txt', 'r') content = f.readline() print("1:%s" % content) content = f.readline() print("2:%s" % content) f.close()
- readlines读取:可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行为列表的 一个元素。
3.序列化与反序列化
- 通过文件 *** 作,我们可以将字符串写入到一个本地文件。但是,如果是一个对象(例如列表、字典、元组等),就无法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里。
- 设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字节序列恢复到内存中,就是反序列化。
- 对象---》字节序列 === 序列化
- 字节序列--》对象 ===反序列化
- Python中提供了JSON这个模块用来实现数据的序列化和反序列化。
①json模块
- JSON(JavascriptObjectNotation, JS对象简谱)是一种轻量级的数据交换标准。JSON的本质是字符串。
1)使用JSON实现序列化
SON提供了dump和dumps方法,将一个对象进行序列化。
- dumps方法的作用是把对象转换成为字符串,它本身不具备将数据写入到文件的功能。
import json file = open('names.txt', 'w') names = ['zhangsan', 'lisi', 'wangwu', 'jerry', 'henry', 'merry', 'chris'] # file.write(names) 出错,不能直接将列表写入到文件里 # 可以调用 json的dumps方法,传入一个对象参数 result = json.dumps(names) # dumps 方法得到的结果是一个字符串 print(type(result)) ## 可以将字符串写入到文件里 file.write(result) file.close()
- dump方法可以在将对象转换成为字符串的同时,指定一个文件对象,把转换后的字符串写入到这个文件里。
import json file = open('names.txt', 'w') names = ['zhangsan', 'lisi', 'wangwu', 'jerry', 'henry', 'merry', 'chris'] # dump方法可以接收一个文件参数,在将对象转换成为字符串的同时写入到文件里 json.dump(names, file) file.close()
2)使用JSON实现反序列化
使用loads和load方法,可以将一个JSON字符串反序列化成为一个Python对象。
- loads方法需要一个字符串参数,用来将一个字符串加载成为Python对象。
import json # 调用loads方法,传入一个字符串,可以将这个字符串加载成为Python对象 result = json.loads('["zhangsan", "lisi", "wangwu", "jerry", "henry", "merry", "chris"]') print(type(result)) #
- load方法可以传入一个文件对象,用来将一个文件对象里的数据加载成为Python对象。
import json # 以可读方式打开一个文件 file = open('names.txt', 'r') # 调用load方法,将文件里的内容加载成为一个Python对象 result = json.load(file) print(result) file.close()
4.异常
- 程序在运行过程中,由于我们的编码不规范,或者其他原因一些客观原因,导致我们的程序无法继续运行,此时, 程序就会出现异常。如果我们不对异常进行处理,程序可能会由于异常直接中断掉。为了保证程序的健壮性,我们 在程序设计里提出了异常处理这个概念。
- try...except语句可以对代码运行过程中可能出现的异常进行处理。 语法结构:
try: 可能会出现异常的代码块 except 异常的类型: 出现异常以后的处理语句
try: f = open('test.txt', 'r') print(f.read()) except FileNotFoundError: print('文件没有找到,请检查文件名称是否正确')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)