pickle 存放数据

将数据保存为文件是永久保存的唯一方式,而文档内部是以字符串形式进行存放的,如果我们需要保存的是一个包含很多数据甚至是类的实例化的复杂的列表、元组和字典等,将其以文本文档方式保存后,很难将其还原回去,而pickle的出现解决了这一难题,它的解决机制是这样的:所有的数据类型在电脑内本质上都是二进制的数字组成,如果能将这些列表、元组或者字典直接保存为二进制文件的格式,即实现了永久存储,且还可以直接通过unpickle的方式将其从二进制形式转换为相应的列表、元组或者字典类型。在这个模块里面有两个基本的内置函数可以实现上述过程:首先是dump()函数,将复杂的数据类型转换为一个二进制文件保存起来;其次是load()函数,将保存好的二进制文件恢复成相应的复杂数据类型。

保存和提取python运算完的结果

首先import pickle模块

定义一个字典:

a_dict={'da':111,2:[23,1,4],'23':{1:2,'d':'sad'}}

首先打开一个file,后缀名用pickle代替即可,以二进制形式打开

file=open('pickle_example.pickle','wb')

接着用dump,把a_dict放入到file中,并关闭文件

pickle.dump(a_dict,file)
file.close()

接着读取我们存储的文件

首先打开文件,打开方式为‘rb’,使用pickle的load下载内容,最后关闭文件

file=open('pickle_example.pickle','rb')
a_dict1=pickle.load(file)
file.close()
print(a_dict1)

运行结果如下所示:

上述过程可简化,使用with语句,不用考虑到关闭文件,只要运行完会自动将文件关闭

with open('pickle_example.pickle','rb')as file:
a_dict1=pickle.load(file)
print(a_dict1)

写入也可以用with语句简化

set 找不同

使用set可以去除对象中的重复元素

char_list=['a','b','c','c','d','d','d']

print(set(char_list))

运行结果如下所示:

返回的是一个类似于字典的内容,但不是字典,字典有key和value,但是该内容只有value

使用type来输出类型:

print(type(set(char_list)))
print(type({1:2}))

结果如下所示:

定义一个句子,set同样能去掉重复的内容:

sentence='Welcome Back to This Tutorial'

print(set(sentence))

运行结果如下所示:

set区分大小写、空格

能否直接比较char_list和sentence的不同?

print(set([sentence,char_list]))

运行报错,不能在set中传入list,出现错误:TypeError: unhashable type: 'list'

可以通过add增加内容,如果set中已有的内容则不重复添加

unique_char=set(char_list)
unique_char.add('x')
print(unique_char)

运行结果如下,增加了‘x’

同样add不能传入list,需要一个一个添加

还可以通过clear清除内容

unique_char.clear()

运行结果为:

可以通过remove去除某一内容,返回值为None

print(unique_char.remove('x'))
print(unique_char)

运行结果为:

如果remove的内容是对象中没有的,则运行将会报错,为了避免这种情况,可使用discard,运行将不会报错,返回None

使用difference和intersection来寻找两个序列中不同和相同的内容,代码如下所示:

set1=unique_char
set2={'a','e','i'}
print(set1)
print(set2)
print(set1.difference(set2))
print(set1.intersection(set2))

运行结果如下所示:

Python初学——pickle & set的更多相关文章

  1. Python ,pickle

    @Python pickle模块学习   pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. ---------------------------------------- ...

  2. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备

     孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...

  3. (Python编程)Pickle对象

    Programming Python, 3rd Edition 翻译 最新版本见:http://wiki.woodpecker.org.cn/moin/PP3eD 19.4. Pickled Obje ...

  4. Python 序列化 pickle/cPickle模块

    Python 序列化 pickle/cPickle模块 2013-10-17 Posted by yeho Python序列化的概念很简单.内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给 ...

  5. 从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞

    从watevrCTF-2019:Pickle Store中学习python之pickle序列化漏洞 pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. 其本质是Picklin ...

  6. Python初学笔记之字符串

    一.字符串的定义 字符串是就一堆字符,可以使用""(双引号).''(单引号)来创建. 1 one_str = "定义字符串" 字符串内容中包含引号时,可以使用转 ...

  7. 21 python 初学(json pickle shelve)

    json: # _author: lily # _date: 2019/1/19 import json my_dict = {'name': 'lily', 'age': 18} f = open( ...

  8. Python初学的易犯错误

    当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...

  9. 【python】pickle模块

    持久性的基本思想很简单.假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项).换句话说,您希望将对象存储在磁盘上,便于以后检 ...

随机推荐

  1. 【TOP】top命令的load average的意义

    一. 怎么查看机器负载 uptime 命令: $uptime 14:32:32 up 108 days, 23:04, 17 users,  load average: 0.06, 0.08, 0.0 ...

  2. 【PHP】this,self,parent的区别(转)

    一. 定义&区别 self: 指向当前类的指针,self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量. this: 指向当前对象的指针,使用parent来调用父类的构造函 ...

  3. opnet仿真过程中SEED的概念问题 分类: opnet 2014-11-02 15:25 69人阅读 评论(0) 收藏

    仿真配置中SEED的概念:仿真随机种子,是产生随机数的种子值,反应随机数的状态.只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现.目的是测试仿真系统的稳健性,具体来说,针 ...

  4. lnk后缀名打开方式

    老娘栽了两次!! 前段时间,设计把设计图发给我,竟然是个后缀"exe"的文件,选择打开方式的时候忘记取消下图勾选: 结果懵逼了... 在网上找了个方法: 1.打开电脑"运 ...

  5. SQL Server Alwayson创建代理作业注意事项

    介绍 Always On 可用性组活动辅助功能包括支持在辅助副本上执行备份操作. 备份操作可能会给 I/O 和 CPU 带来很大的压力(使用备份压缩). 将备份负荷转移到已同步或正在同步的辅助副本后, ...

  6. 转载的log4cplus使用指南

    以下转载的log4cplus使用指南的版本可能不是最新,仅作参考了解.应以最新安装包中的示例代码为准. 目    录1 Log4cplus简介    52 安装方法    53 主要类说明    64 ...

  7. 蓝桥杯算法训练_2的次幂表示+前缀表达式+Anagrams问题+出现次数最多的整数

    今天做了4个简单的题,题目虽然是简单,但是对于我这样的小白,还是有很多东西需要学习的. 2的次幂表示 上面就是题目,题目说的也很清晰了,接下来就是递归的实现: #include<iostream ...

  8. 响应式布局 —— Demo

    响应式布局实例演示What is 响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这 ...

  9. [SCOI2007]压缩 区间dp

    明显是个区间dp,但是我区间dp就是个渣... f[i][j]表示区间i到j最短的字符长度:假设前面加了个M,所以初始化f[i][i]=2;当然最开始是不算M的,所以f[1][1]=1;然后就可以区间 ...

  10. 二分图最大匹配:匈牙利算法的python实现

    二分图匹配是很常见的算法问题,一般用匈牙利算法解决二分图最大匹配问题,但是目前网上绝大多数都是C/C++实现版本,没有python版本,于是就用python实现了一下深度优先的匈牙利算法,本文使用的是 ...