Python编码、集合set、深浅拷贝】的更多相关文章

set集合 特点: 无序, 不重复, 元素必须可哈希(不可变) 作用: 去重复 本身是可变的数据类型. 有增删改查操作. frozenset()冻结的集合. 不可变的. 可hash的 深浅拷贝() 1. 赋值. 没有创建新对象. 公用同一个对象 2. 浅拷贝. 拷贝第一层内容. [:]或copy() 3. 深拷贝. 拷贝所有内容. 包括内部的所有. 深度拷贝:需引入模块 import copy 代码: lst = copy.deepcopy() 1. 判断一个数是否是水仙花数, 水仙花数是一个三…
深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层.所以对于只有一层的数据集合来说深浅拷贝的意义是一样的,比如字符串,数字,还有仅仅一层的字典.列表.元祖等 对于以下数据深浅拷贝的意义是一样的: name = 'beijing' age = 12 list1 = [1,2,3,4] dic1 = {'name':'beijing','age':20}…
一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作: li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_".join(li) print(s) # 结果为:李嘉诚_何炅_海峰_刘嘉玲 li = '黄花大闺女' s = "_".join(li) print(s) # 结果为:黄_花_大_闺_女 2,列表相关: 循环删除列表中的每一个元素,有如下代码,注意结果并分析原因: li = [11…
一.知识点补充 1.1字符串的基本操作 li =["李李嘉诚", "麻花藤", "⻩黄海海峰", "刘嘉玲"] s = "_".join(li) print(s) li = "黄花大闺女" s = "_".join(li) print(s) 1.2列表: 循环删除列表中的每一个元素 li = [, , , ] for e in li: li.remove(e) pri…
小数据池 int: -5~256 str: 字母,数字长度任意符合驻留机制 字符串进行乘法时总长度不能超过20 特殊符号进行乘法时只能乘以0 代码块: 一个py文件,一个函数,一个模块,终端中的每一行都是代码块 int:-5~无穷大 str: 定义字符串的时候可以是任意的 字符串(字母,数字)进行乘法时总长度不得超过20 特殊字符(中文,符号)进行乘法时乘以0或者1 bool: True False is是判断两边的内存地址是否相同 ==判断两个值是否相等 代码块.小数据池同在的情况下先执行代码…
一.基础数据类型补充 1.列表转字符串 a='A'.join(['c','c','s']) print(a) 2.循环删除列表中的每⼀一个元素 lst=['asdf','dftgst','zsdrfse'] for i in range(0,len(lst)): lst.pop() print(lst) 3. 类型转换:元组 => 列列表 list(tuple)列列表 => 元组 tuple(list)list=>str str.join(list)str=>list str.sp…
一,字符串和列表的转换 1.str中的 join 方法: 把列表转换成字符串 # 将列表转换成字符串. 每个元素之间用_连接 s = '**'.join(['李启政',' 郑强' , '孙福来']) print(s) #s = ["李启政"**"郑强"**"孙福来"] ss = "李启政**郑强**孙福来" ss.split("**") print(ss) 字符串转化成列表: split() 把列表转化成字…
一.基础数据类型的补充 1.str中的join算法,将列表转换成字符串,并用'_'(或其他) li=['李嘉诚','马化腾','刘嘉玲','黄海峰',] s='_'.join(li) print(s) #李嘉诚_马化腾_刘嘉玲_黄海峰 2.循环删除列表中的每个元素 li=['李嘉诚','马化腾','刘嘉玲','黄海峰',] for el in li: li.remove(el) print(li) #['马化腾', '黄海峰'] 原因分析:for循环在运行过程中会有一个指针记录当前循环的元素是哪…
一.字符串和列表的相互转化 之前写到想把xx类型的数据转化成yy类型的数据,直接yy(xx)就可以了,但是字符串和列表的转化比较特殊,相互之间的转化要通过join()和split()来实现. 例如: 列表转化成字符串: lst = ['高新华','刘清扬','翠云彰'] s = '**'.join(lst) print(s) #高新华**刘清扬**翠云彰 字符串转化成列表: ss = '高新华**刘清扬**崔元章' s =ss.split('**') print(s) #['高新华', '刘清扬…
1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同内存地址相同 1.2 小数据池: 1.2.1 数字: -5 ~ 256 1.2.2 字符串: 乘法时总长度不能超过20 1.2.3 布尔值: 内容相同内存地址相同 1.3 先执行代码块后执行小数据池 1.4 == is 1.4.1 == 判断等号两边值是否相等 1.4.2 is 判断两边的值内存地址…
 一.计算机基础 1..软件(应用程序) 2.解释器/编译器 - 解释型语言:将代码每一行传递给计算机一行,常用编程语言python,PHP,Ruby. - 编译型语言:将代码完全执行完后会形成一个文件把结果传递给计算机,常用编程语言C, C++, C#, Java, Go语言. 3.操作系统 - Windows :价格昂贵 -xp,win7,win8,win10,Windows server - Linux -centos 免费,图形画面差 -Ubuntu 个人开发,图形画面较好 -Redha…
思维导图: 集合的补充:下面的思维导图有一个点搞错了,在这里纠正一下,没有合集,是反交集,^这个是反差集的意思 . 交集&,反交集^,差集-,并集|,然后就是子集和超集 数据类型补充: ''' 1,int 2,str 3,tuple tu = (1) tu1 = ('name',) print(tu,type(tu)) # 1 <class 'int'> print(tu1,type(tu1)) tu = ('dfas') tu1 = ('name',) print(tu,type(t…
字符串的操作补充: .join() 方法用于将序列(字符串/列表/元组/字典)中的 元素 以指定的字符连接生成一个新的字符串 str = "人生苦短我用python!" # 用于字符串 s = ".".join(str) s1 = "_".join(str) print(s) # 人.生.苦.短.我.用.p.y.t.h.o.n.! print(s1) # 人_生_苦_短_我_用_p_y_t_h_o lis = ["] # 用于列表 pr…
一.基本数据类型补充 1,关于int和str在之前的学习中已经介绍了80%以上了,现在再补充一个字符串的基本操作 str.join(可迭代对象): li = ['李嘉诚','何炅','海峰','刘嘉玲'] s = "_".join(li) print(s) # 结果为:李嘉诚_何炅_海峰_刘嘉玲 li = ['h','e','l','l','o'] s = "".join(li) print(s) # 结果为:hello li = '黄花大闺女' s = "…
3.9 内存相关 3.9.1 id,查看内存地址 >>> v1 = [11,22,33] >>> v2 = [11,22,33] >>> print(id(v1),id(v2)) # 比较两个变量的内存值 4472652360 4473773640 # 对于 -5 ~ 256 的整数来说会有小地址池的概念,不会创建新的内存地址 >>> v1 = "我,你,他,它,她" >>> v2 = "…
collection模块是对Python的通用内置容器:字典.列表.元组和集合的扩展,它包含一些专业的容器数据类型: Counter(计数器):dict子类,用于计算可哈希性对象的个数. OrderedDict(有序字典):dict 子类,记录着数据成员添加的顺序. defaultdict(默认字典):dict 子类,调用一个工厂函数来为dict的values值缺失提供一个默认值. namedtuple(可命名元组):工厂函数生成有命名字段的tuple子类. deque(双向队列):能在“队列”…
在理解深浅拷贝之前,我们先熟悉下变量对象和数据类型 1.变量和对象 变量-引用-对象(可变对象,不可变对象) 在python中一切都是对象,比如[1,2],'hello world',123,{'k1':'v1'}, 比如说: >>> a = 3 专业表述如下: 变量是一个系统表的元素,拥有指向对象的连接的空间 对象是被分配的一块内存,存储其所代表的值 引用是自动形成的从变量到对象的指针 特别注意: 类型属于对象,不是变量 共享引用: 比如说: >>> a = 3 &g…
python的变量及其存储 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的值本身. 引用语义:在python中,变量保存的是对象(值)的引用,我们称为引用语义.采用这种方式,变量所需的存储空间大小一致,因为变量只是保存了一个引用.也被称为对象语义和指针语义. 值语义:有些语言采用的不是这种方式,它们把变量的值直接保存在变量的存储区里,这种方式被我们称为值语义,…
今日所得 包 logging模块 hashlib模块 openpyxl模块 深浅拷贝 包 在学习模块的时候我们了解过模块的四种表现形式,其中的一种就是包. 什么是包? 它是一系列模块文件的结合体,表示形式就是一个文件夹,该文件夹的内部通常会有一个__init__.py文件,而包的本质其实还是一个模块. 首次导入包的步骤: 先产生一个执行文件的名称空间 1.创建包下面的__init__.py文件的名称空间 2.执行包下面的__init__.py文件中的代码,将产生的名字放入包下面的__init__…
深浅拷贝 对象引用.浅拷贝.深拷贝(拓展.难点.重点) Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果 其实这个是由于共享内存导致的结果 拷贝:原则上就是把数据分离出来,复制其数据,并以后修改互不影响. 先看一个非拷贝的例子 使用=赋值(对象引用) =赋值:数据完全共享 =赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变 如果是不可变类型 (immutable) ,比如字符串,修改了其…
深浅拷贝 一.浅拷贝 列表中存储的是数据的内存地址,当我们要查询或修改列表中的数据时,我们是通过列表中的地址找到要访问的内存.当我们修改列表中的数据时,如果修改的是一个不可变类型(整型,长整型,浮点数,复数,布尔,字符串,元组),会开拓一个新的内存空间用于存放新的数据,然后把列表中的地址修改为存放新数据的地址,此时没有出现问题.但当列表中存的不是一个简单的数据,而是一个可变类型(列表,字典),就会出现问题.下面用一个例子来解释: print('修改前')a = [[1,2],3,4]b = a.…
深浅拷贝 1.注意在拷贝中只有使用了.deepcopy方法才能进行深度拷贝!其余的一律是浅拷贝 #深拷贝import copy lst = copy.deepcopy(lst1)  浅拷贝: 拷贝的是第一层,将第一层的内容复制,第二级元素却公用一个内存地址,既将第一层没有第二层元素的元素复制到新的地址,有第二层元素的第一层元素还是共用的. lst1 = ["何炅", "杜海涛","周渝民"] lst2 = lst1.copy() lst1.app…
根据数据类型分为两部分进行剖析: int.str类型      list.tuple.dict类型等 1.  int.str类型 [int类型实例] >>> import copy # 导入copy模块 >>> a1=11 >>> a2=a1 # 直接赋值引用 >>> a3=copy.copy(a1) # 浅拷贝 >>> a4=copy.deepcopy(a1) # 深拷贝 >>> id(a1),i…
目录 深浅拷贝 拷贝 浅拷贝 深拷贝 深浅拷贝 拷贝 s=['tim','age'] s2=s #这里的s2列表指向与s相同的id 当s2为s的拷贝对象时,s内的可变类型变化,s2变化;s内的不可变类型变化,s2变化 浅拷贝 import copy li=[1,12,36,[5,6,]] lis=copy.copy(li) li[0]=5 print(li,lis) print(id(li),id(lis)) li[-1]=6 print(li,lis) print(id(li[-1]),id(…
1.set集合 特点:无序,不重复,元素必须可哈希(不可变) 作用:去重复 本身是可变的数据类型.有增删改查操作.{集合的增删改查操作应用较少,这里不做详细介绍了(这里的增有一个方法update注意这个是迭代添加)} frozenset()冻结的集合.不可变,可哈希. s = {"哈哈哈","嘿嘿嘿","呵呵呵"} s1 = frozenset(s) print(type(s1)) #<class 'frozenset'> 2.深浅c…
1. 1.作业 1.把列表中所有姓周的人的信息删掉(升级题:此题有坑, 请慎重): lst = ['周老二', '周星星', '麻花藤', '周扒皮'] 结果: lst = ['麻花藤'] 2.车牌区域划分, 现给出以下车牌. 根据车牌的信息, 分析出各省的车牌持有量. (升级题) cars = ['鲁A32444','鲁B12333','京B8989M','黑C49678','黑C46555','沪 B25041'.....] locals = {'沪':'上海', '黑':'黑龙江', '鲁…
一.基础数据类型汇总补充 1.查看str所有方法方式 2.列表:在循环中删除元素,易出错或报错(飘红) lis = [11,22,33,44,55] # for i in range(len(lis)): # print(i) # i = 0 i = 1 i = 2 # del lis[i] # print(lis) # [11,22,33,44,55] [22, 44, 55] [22, 44] 可变数据类型,删除中数据改变.  报错: list assignment index out of…
一. is  ==  的区别 双等表示的是判断是否相等, 注意. 这个双等比较的是具体的值.而不是内存地址 is 比较的是地址 编码回顾 除了了ASCII码以外, 其他信息不能直接转换 编码和解码的时候都需要制定编码格式.s = "我是文字"bs = s.encode("GBK") # 我们这样可以获取到GBK的⽂文字# 把GBK转换成UTF-8# 首先要把GBK转换成unicode. 也就是需要解码s = bs.decode("GBK") #…
包 包: # 包是一系列模块文件的结合体,表现形式是文件夹,该文件夹内部通常会包含一个__init__.py文件,本质上还是一个模块 包呢,就是前两篇博客中提到的,模块的四种表现形式中的第三种 # 把一系列模块(.py文件)组合到一起的文件夹(包) 下文呢,也将把包与模块前面的模块知识对比展开. 首先,复习下执行文件导入模块发生的一些事 """ 1.先产生一个执行文件的名称空间 2.创建模块文件的名称空间 3.执行模块文件中的代码 将产生的名字放入模块的名称空间中 4.在执行…
一. 集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系测试,测试两组数据之前的交集.差集.并集等关系. 1. 集合的创建 set1 = set({1,2,'barry'}) set2 = {1,2,'barry'} print(set1,set2) # {1, 2, 'barry'} {1, 2, 'barry'} 2. 集合的增 set1 =…