python内建数据结构 分类 数值型: int float complex bool 序列对象: 字符串str 列表list 元组tuple 键值对: 集合set 字典dict 数值型 (list float complex bool都是class) int:python3 中 int 就是长整型,没有大小限制 float:支持十进制和科学计数法表示,由C的双精度型实现 complex:由实数和虚数部分组成,实部和虚部都是浮点数 bool:int 的子类,仅有2个实例 True 和 False…
列表list定义 L1 = [] L2 = [1,2,'abc'] L3 = list() L4 = list(range(5)) L5 = [1,'abc',True,None,[4,5,'abc'],str] isinstance(L5,list) True 列表索引访问 L6 = list(range(5,10)) L6 [5, 6, 7, 8, 9] 正索引:从下边界至上边界,从0开始,为列表中每一个元素编号 #为便于理解,认为列表左为下边界,右为上边界 负索引:从上边界至下边界,从-1…
列表复制 浅拷贝:简单类型元素全复制,引用类型元素只复制引用 L1 = [3,2,1,[4,5,6],8,'abc'] L1 [3, 2, 1, [4, 5, 6], 8, 'abc'] L2 = L1.copy() L2 [3, 2, 1, [4, 5, 6], 8, 'abc'] L1[3][1] = 10 #修改L1中的元素L2也随之变化 L1 [3, 2, 1, [4, 10, 6], 8, 'abc'] L2 [3, 2, 1, [4, 10, 6], 8, 'abc'] 深拷贝:co…
深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层.所以对于只有一层的数据集合来说深浅拷贝的意义是一样的,比如字符串,数字,还有仅仅一层的字典.列表.元祖等 对于以下数据深浅拷贝的意义是一样的: name = 'beijing' age = 12 list1 = [1,2,3,4] dic1 = {'name':'beijing','age':20}…
一.运算符及优先级 Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 1.算数运算符 运算符 描述 实例,a=20,b=10 + 加 a+b输出结果30 - 减 a-b输出结果10 * 乘 a*b 输出结果200 / 除 a/b输出结果2 % 取模 a/b输出结果0 ** 取幂 a**b输出结果20的10次方 // 取整除 9/2输出结果4,9.0/2.0输出结果4.0 2.比较运算符 运算符 描述 实例 == 等于 (a==b)返回False !+ 不等于 (a!=b)…
在理解深浅拷贝之前,我们先熟悉下变量对象和数据类型 1.变量和对象 变量-引用-对象(可变对象,不可变对象) 在python中一切都是对象,比如[1,2],'hello world',123,{'k1':'v1'}, 比如说: >>> a = 3 专业表述如下: 变量是一个系统表的元素,拥有指向对象的连接的空间 对象是被分配的一块内存,存储其所代表的值 引用是自动形成的从变量到对象的指针 特别注意: 类型属于对象,不是变量 共享引用: 比如说: >>> a = 3 &g…
python的变量及其存储 在高级语言中,变量是对内存及其地址的抽象.对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的值本身. 引用语义:在python中,变量保存的是对象(值)的引用,我们称为引用语义.采用这种方式,变量所需的存储空间大小一致,因为变量只是保存了一个引用.也被称为对象语义和指针语义. 值语义:有些语言采用的不是这种方式,它们把变量的值直接保存在变量的存储区里,这种方式被我们称为值语义,…
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(双向队列):能在“队列”…
# copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. **只是简单的指针赋值 # copy.deepcopy 深拷贝 拷贝对象及其子对象 **指针赋值,且内容拷贝 用一个简单的例子说明如下: >>>import copy >>>a = [1, 2, 3, 4, ['a', 'b', 'c']] >>> b = a >>> c = copy.copy(a) >>> d = copy.deepcop…
set集合 特点: 无序, 不重复, 元素必须可哈希(不可变) 作用: 去重复 本身是可变的数据类型. 有增删改查操作. frozenset()冻结的集合. 不可变的. 可hash的 深浅拷贝() 1. 赋值. 没有创建新对象. 公用同一个对象 2. 浅拷贝. 拷贝第一层内容. [:]或copy() 3. 深拷贝. 拷贝所有内容. 包括内部的所有. 深度拷贝:需引入模块 import copy 代码: lst = copy.deepcopy() 1. 判断一个数是否是水仙花数, 水仙花数是一个三…
本节内容: 1.深浅拷贝 2.三目运算 3.迭代器和生成器 4.装饰器 1.深浅拷贝 拷贝意味着对数据重新复制一份,深浅拷贝的含义就是:对于修改复制的数据是否会影响到源数据,拷贝操作对于基本数据结构需要分两类进行考虑,一类是字符串和数字,另一类是列表.字典等.如果要进行拷贝的操作话,要import copy. 1.数字和字符串 对于数字和字符串而言,深拷贝,浅拷贝没有什么区别,因为对于数字数字和字符串一旦创建便不能被修改,假如对于字符串进行替代操作,只会在内存中重新生产一个字符串,而对于原字符串…
今日所得 包 logging模块 hashlib模块 openpyxl模块 深浅拷贝 包 在学习模块的时候我们了解过模块的四种表现形式,其中的一种就是包. 什么是包? 它是一系列模块文件的结合体,表示形式就是一个文件夹,该文件夹的内部通常会有一个__init__.py文件,而包的本质其实还是一个模块. 首次导入包的步骤: 先产生一个执行文件的名称空间 1.创建包下面的__init__.py文件的名称空间 2.执行包下面的__init__.py文件中的代码,将产生的名字放入包下面的__init__…
深浅拷贝 对象引用.浅拷贝.深拷贝(拓展.难点.重点) Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果 其实这个是由于共享内存导致的结果 拷贝:原则上就是把数据分离出来,复制其数据,并以后修改互不影响. 先看一个非拷贝的例子 使用=赋值(对象引用) =赋值:数据完全共享 =赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变 如果是不可变类型 (immutable) ,比如字符串,修改了其…
深浅拷贝 一.浅拷贝 列表中存储的是数据的内存地址,当我们要查询或修改列表中的数据时,我们是通过列表中的地址找到要访问的内存.当我们修改列表中的数据时,如果修改的是一个不可变类型(整型,长整型,浮点数,复数,布尔,字符串,元组),会开拓一个新的内存空间用于存放新的数据,然后把列表中的地址修改为存放新数据的地址,此时没有出现问题.但当列表中存的不是一个简单的数据,而是一个可变类型(列表,字典),就会出现问题.下面用一个例子来解释: print('修改前')a = [[1,2],3,4]b = a.…
根据数据类型分为两部分进行剖析: 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…
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 判断两边的值内存地址…
目录 深浅拷贝 拷贝 浅拷贝 深拷贝 深浅拷贝 拷贝 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.注意在拷贝中只有使用了.deepcopy方法才能进行深度拷贝!其余的一律是浅拷贝 #深拷贝import copy lst = copy.deepcopy(lst1)  浅拷贝: 拷贝的是第一层,将第一层的内容复制,第二级元素却公用一个内存地址,既将第一层没有第二层元素的元素复制到新的地址,有第二层元素的第一层元素还是共用的. lst1 = ["何炅", "杜海涛","周渝民"] lst2 = lst1.copy() lst1.app…
包 包: # 包是一系列模块文件的结合体,表现形式是文件夹,该文件夹内部通常会包含一个__init__.py文件,本质上还是一个模块 包呢,就是前两篇博客中提到的,模块的四种表现形式中的第三种 # 把一系列模块(.py文件)组合到一起的文件夹(包) 下文呢,也将把包与模块前面的模块知识对比展开. 首先,复习下执行文件导入模块发生的一些事 """ 1.先产生一个执行文件的名称空间 2.创建模块文件的名称空间 3.执行模块文件中的代码 将产生的名字放入模块的名称空间中 4.在执行…
1.赋值操作 list_1 = [1,2,3,['barry','Jerry']] list_2 = list_1 list_1[0] = 111 print(list_1) # [111, 2, 3, ['barry', 'Jerry']] print(list_2) # [111, 2, 3, ['barry', 'Jerry']] 对于赋值运算操作.list[1]与list[2]指向的是同一个内存地址.所以完全一样 2.浅拷贝 # -------------浅拷贝-------------…
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 lst1 = ["⾦⽑狮王", "紫衫⻰王", "⽩眉鹰王", "⻘翼蝠王"] lst2 = lst1 print(lst1) print(lst2) lst1.append("杨逍") print(lst1) print(lst2) 结果: ['⾦⽑狮王', '紫衫⻰王', '⽩眉鹰王…
浅拷贝 # 浅拷贝只copy一层 s = [3,'Lucy',4,[1,2]] s1 = s.copy() 深拷贝 # 深拷贝——克隆一分 import copy s = [3,'Lucy',4,[1,2]] s2 = copy.deepcopy(s) s2[2] = 5 s[3][1] = 6 print(s) # [3, 'Lucy', 4, [1, 6]] print(s2) # [3, 'Lucy', 5, [1, 2]]  …
# 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(type(a)) #查看得到的数据类型方法 # x =1-2j# print(x.imag)## print(x.real) # 这里是字符串相加,通过如果是age是int的是时候是无法相加的# name = 'huang'# age = '18'# alex =name+age# print(alex) # al…
1. pass break continue # ### pass break continue # (1) pass 过 """如果代码块当中,什么也不写,用pass来进行站位""" def func(): pass if 5 == 5: pass # while 5>3: # pass # (2) break 终止当前循环 (只能在循环当中使用) # 打印1~10 如果遇到5就终止循环 i = 1 while i<=10: pri…
一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算. sets 支持 x in set, len(set),和 for x in set.作…
一:列表和元组(引用计数了解,深浅拷贝了解) 序列:序列是一种数据结构,对其中的元素按顺序进行了编号(从0开始).典型的序列包括了列表,字符串,和元组 列表是可变的(可以进行修改),而元组和字符串是不可变得(一旦创建了就是固定的). 列表操作: >>> a = [,,] >>> type(a) <class 'list'> >>> id(a) >>> a.append() //可以修改内容,不会改变其内存地址 >&g…
深浅拷贝的原理 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层.所以对于只有一层的数据集合来说深浅拷贝的意义是一样的,比如字符串,数字,还有仅仅一层的字典.列表.元祖等. 对于以下数据深浅拷贝的意义是一样的(因为数据类型中只有一层): name = 'beijing' #字符串 age = 12 #数字 list1 = [1,2,3,4]…
1.基本数据类型补充 2.深浅拷贝 DAY7-基本数据类型(基本数据类型补充&深浅拷贝) 本节主要内容: 1.补充基础数据类型 (1)join方法 (2)split方法 (3)列表不能在循环时删除,因为索引会发生改变 (4)字典不能直接删除,要把删除的内容先记录在列表中,循环列表,删除字典中的数据 (5)fromekeys()不会对原来的字典产生影响,面试常考题(巨坑) 2.深浅拷贝部分 (1)=从上到下只有一个列表创建 (2)copy 等价于[:]切割 (3)引入一个模块:import cop…
本节主要内容:1. 基础数据类型补充2. set集合3. 深浅拷⻉ " ".join方法 循环删除列表中的内容:   错误的  原因:在for循环中,循环到第一个,然后删除,删除之后第二个元素向前挪一位,循环指针向后移一位,再删除,结果会导致22,44没删除掉. 只有这样才是可以的: 注意: 由于删除元素会导致元素索引发生变化,所以删除元素是,尽量不要在原来的地方删除,尽量创建一个新的 然后去批量删除 dict中的fronkey()可以帮我们通过list  创建一个dict 前⾯列表中…