Python学习之路——基础2(含深浅拷贝)
逻辑运算符:not and or
等同于c/c++中的 !、&&、||,除了写法上的不同,实际原理是一样的。
运算也遵循短路原则。由于Python本身不支持++/--操作符,所以避免了类似于c/c++中不慎在&&和||后的表达式中加入++/--运算符,而实际程序运行却产生超出预期的效果,满屏查错却迟迟无法解决。
条件1 or 条件2 #条件1为真时,不判断条件2
条件3 and 条件4 #条件3为假时,不判断条件4
字符格式化输出 %s %d %f
深浅拷贝
浅拷贝 最简单的记忆方法就是,只拷贝最外层的容器。
深拷贝 就是拷贝出一份副本。
对序列执行切片操作时,返回的切片都是副本。但是浅拷贝。
import copy names = [1, 2, 3, [5, 6]] n = names m = names[:] # slicing k = copy.copy(names) # shallow copy # k2 = names.copy() j = copy.deepcopy(names) # deep copy print(n is names, n == names) print(m is names, m == names) print(j is names, j == names) print(k is names, k == names) print(j is m, m is k, j is k) print(j == m, m == k, j == k) names[3][0] = 7 print(k, j) print(id(names), id(n), id(m), id(k)) for a in names: print(id(a)) for a in k: print(id(a))
相关文章移步这里吧:Python的深拷贝与浅拷贝
之前有困惑:既然copy()是浅拷贝,k当中存储的内存地址和names所存储的内存地址相同,为什么k is names返回了False呢?
因为k是创建的新的对象,在内存中开辟出一块内存用来存储与names相同的内存地址,这块内存的地址和names并不一样,所以k is names返回了False。
只有在两个变量指向同一个内存地址时,这两者使用is关键字才会返回True,这时其中一个变量名其实只是给之前开辟出的内存块地址起了别名而已。
Python学习之路——基础2(含深浅拷贝)的更多相关文章
- python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充
本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...
- python学习笔记:第7天 深浅拷贝
目录 1. 基础数据类型补充 2. set集合 3. 深浅拷贝 1. 基础数据类型补充 (1)join方法 join方法是把一个列表中的数据进行拼接,拼接成字符串(与split方法相反,split方法 ...
- Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy
1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...
- python学习之路基础篇(第五篇)
前四天课程回顾 1.python简介 2.python基本数据类型 类: int:整型 | str:字符串 | list:列表 |tuple:元组 |dict:字典 | set:集合 对象: li = ...
- python学习之路基础篇(第四篇)
一.课程内容回顾 1.python基础 2.基本数据类型 (str|list|dict|tuple) 3.将字符串“老男人”转换成utf-8 s = "老男人" ret = by ...
- Python学习之路——基础1
python作为一门解释型的编程语言,和c/c++等其他语言都或多或少有相通的地方,所以有语言基础的话,学起来还是方便一些.所以我的笔记对于相对简单的概念可能会选择放过,但对自己记录的东西我会力求完备 ...
- python学习之路基础篇(第八篇)
一.作业(对象的封装) 要点分析 1.封装,对象中嵌套对象 2.pickle,load,切记,一定要先导入相关的类二.上节内容回顾和补充 面向对象基本知识: 1.类和对象的关系 2.三大特性: 封装 ...
- python学习之路基础篇(第七篇)
一.模块 configparser configparser用于处理特定格式的文件,其本质是利用open来对文件进行操作 [section1] # 节点 k1 = v1 # 值 k2:v2 # 值 [ ...
- python学习之路基础篇(三)
博客参考:http://www.cnblogs.com/wupeiqi/articles/4943406.html http://www.cnblogs.com/luotianshuai/p/4949 ...
随机推荐
- .net mvc 设置div的动态部分视图内容 dynamic partial view
示例效果:点击按钮,在div中 显示不同的partial view的内容 $("#btnEdit").click(function () { //动态获取相应的部分视图 var u ...
- 微信小程序支付c#后台实现
今天为大家带来比较简单的支付后台处理 首先下载官方的c#模板(WxPayAPI),将模板(WxPayAPI)添加到服务器上,然后在WxPayAPI项目目录中添加两个“一般处理程序” (改名为GetOp ...
- winfrom 树勾选
树勾选 /// <summary> /// 树勾选 /// </summary> /// <param name="sender"></p ...
- UWP 应用获取各类系统、用户信息 (2) - 商店授权信息、零售演示模式信息、广告 ID、EAS 设备信息、硬件识别信息、移动网络信息
应用开发中,开发者时常需要获取一些系统.用户信息用于数据统计遥测.问题反馈.用户识别等功能.本文旨在介绍在 Windows UWP 应用中获取一些常用系统.用户信息的方法.示例项目代码可参见 Gith ...
- 【学习笔记】关于DOM4J:使用DOM4J解析XML文档
一.概述 DOM4J是一个易用的.开源的库,用于XML.XPath和XSLT中.采用了Java集合框架并完全支持DOM.SAX.和JAXP. DOM4J最大的特色是使用大量的接口,主要接口都在org. ...
- springboot从入门到精通(二)
这一节我们一起用springboot开发一个应用程序,应用程序里的核心概念是玩家获取英雄列表上的英雄信息. 1.定义实体模型: 代码如下: package com.dota.herolist.enti ...
- Tomcat部分操作
一 概述 1.Tomcat是什么? Tomcat是Apache软件基金会提供的开源免费的服务器,适用于中小型系统与并发访问用户不是很多的情况. 2.域名 IP是互联网上一台计算机的唯一标识,但IP不容 ...
- 清除canvas画布内容--点擦除+线擦除
清空canvas画布内容 1.重置宽或高 由于canvas每当高度或宽度被重设时,画布内容就会被清空,因此可以用以下方法清空:(此方法仅限需要清除全部内容的情况) var c=document.get ...
- 03_Redis数据类型(List)
[List类型] Redis采用的是LinkedList. ArrayList: 数组存储.查询快,增删慢. LinkedList:链表存储.增删快,查询慢,查询两端快. Redis的list内部采用 ...
- android,Exoplayer实现视频播放器
bundle配置: implementation 'com.google.android.exoplayer:exoplayer-core:2.8.1'implementation 'com.goog ...