12 python 初学(深浅拷贝、集合)
深浅拷贝:参考:http://www.cnblogs.com/yuanchenqi/articles/5782764.html
s = [[1, 2], 'lily', 'hello']
s2 = s.copy()
print(s2)
s2[0][1] = 3
print(s2)
print(s)
# >>> [[1, 2], 'lily', 'hello']
# >>> [[1, 3], 'lily', 'hello']
# >>> [[1, 3], 'lily', 'hello']
# 输出结果显示当改变列表内的元素的时候,两个会一起改变
s2 = s 和 s2 = s.copy 是不一样的。
s2 = s:是将 s 整体的一个内存地址直接复制给了 s2,相当于 s2 是 s 的一个别名,两个都指向同一块内存空间
s2 = s.copy:是将s 内的每一份地址都拷贝了一份给 s2
浅拷贝:只拷贝一层,不拷贝第二层
深拷贝:克隆一份,和原来完全没关系 s2 = copy.deepcopy(s)
set:
- 集合的创建,只有一种方式:s = set(‘lily’) ;每个字符为 1 个单独的元素,重复的只保留一个
- 集合对象是一组无序排列的可哈希的值,集合成员可以做字典的键
- set 是无序不重复的,没有索引。
- 集合分类:可变集合(set) 和 不可变集合(frozenset)
可变集合:可添加和删除元素,非可哈希的,不能用做字典的键,也不能做其他集合的元素
不可变集合:与上面相反
5. 集合操作:
in、not in:判断元素是否在集合中
add():将参数作为一个元素加入集合中
update():将参数作为一个序列,将序列中的每一个内容加入到集合中
remove():删除某个元素
pop():随机删除一个
clear():清空
6. 集合类型操作符
in 、not in
集合等价与不等价(==、!=) print(set('lilyyyy') == set('liy')) True
子集,超集 print(set('lilyyyy') < set('lilysu')) True
a = set([1, 2, 3, 4, 5])
b = set([4, 5, 6, 7, 8])
交集 intersection print(a.intersection(b)) == print(a & b)
并集 print(a.union(b)) == print(a | b)
差集 print(a.difference(b)) == print(a - b)
反向交集:print(a.symmetric_difference(b)) == print(a ^ b) 反向差集
父集(超集): a.issuperset(b) == print(a > b)
子集:a.issubset(b) == print(a < b)
拷贝相关:
a = b: a、b是不可变数据类型
'''
b = a 语句是直接将 a 指向的内存地址赋值给 b,a、b都指向同一块内存;
当 a 的值改变时,就指向了另一块内存
'''
a = 10
b = a
print(id(a)) #
print(id(b)) #
a = 5
print(id(a)) #
print(id(b)) #
图解:
a = b: a、b是可变数据类型
s = [1, 'lily', ' hello']
s2 = s
print(id(s)) #
print(id(s2)) #
s[0] = 3
print(s) # [3, 'lily', ' hello']
print(s2) # [3, 'lily', ' hello']
print(id(s)) #
print(id(s2)) #
图解:
12 python 初学(深浅拷贝、集合)的更多相关文章
- Python原理 -- 深浅拷贝
python原理 -- 深浅拷贝 从数据类型说开去 str, num : 一次性创建, 不能被修改, 修改即是再创建. list,tuple,dict,set : 链表,当前元素记录, 下一个元素的位 ...
- Python的深浅拷贝
Python的深浅拷贝 深浅拷贝 1. 赋值,对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量并不是复制一份内容 list1 = [']] list2 = list1 p ...
- python 深浅拷贝&集合
一.深浅拷贝 1.浅拷贝,只会拷贝第一层 s = [1, 'ss', '小可爱'] s1 = s.copy() print(s1) >>> [1, 'ss', '小可爱'] s = ...
- python 小数据池 深浅拷贝 集合
1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同 ...
- 24、简述Python的深浅拷贝以及应用场景
深浅拷贝的原理 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝 ...
- 简述Python的深浅拷贝以及应用场景
深浅拷贝的原理 深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:copy.deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝 ...
- Python入门-深浅拷贝
首先我们在这里先补充一下基础数据类型的一些知识: 一.循环删除 1.前面我们学了列表,字典和集合的一些操作方法:增删改查,现在我们来看一下这个问题: 有这样一个列表: lst = ['周杰伦','周润 ...
- python 赋值 深浅拷贝
深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 impor ...
- python 06 深浅拷贝
目录 1. 小数据池 1.1 代码块 1.2 小数据池 1.3 执行顺序 (代码块--小数据池) 1.4 "=="和 "is" 2. 深浅拷贝 2.1 赋值 2 ...
随机推荐
- HTML基础总结
HTML细化知识点总结 1.h1-h6标签 都是标题标签,定义一段话的标题,h1最大,依次递减,h6最小 标题标签的作用:让文本加粗显示 2. 段落标签:p标签 用来显示一段文本(图片),它会忽略源代 ...
- 洛谷P2421 [NOI2002]荒岛野人(扩展欧几里得)
题目背景 原 A-B数对(增强版)参见P1102 题目描述 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,…,M.岛上住着N个野人,一开始依次住在山洞C1,C2,… ...
- 洛谷P4213 Sum(杜教筛)
题目描述 给定一个正整数N(N\le2^{31}-1)N(N≤231−1) 求ans_1=\sum_{i=1}^n\phi(i),ans_2=\sum_{i=1}^n \mu(i)ans1=∑i=1 ...
- springboot 常用配置文件
1.连接数据库 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId> ...
- git 入门教程之远程仓库
远程仓库 如果说本地仓库已经足够个人进行版本控制了,那么远程仓库则使多人合作开发成为可能. 如果你只是打算自己使用git,你的工作内容不需要发布给其他人看,那就用不到远程仓库的概念. git 是分布式 ...
- getprop从哪获取属性
Android SystemProperties设置/取得系统属性的用法总结 通过调查得知,Android系统中取得/设置系统属性的用法参考以下3篇文章就足够了. 1.Android SystemPr ...
- 读JP摩根的《加密货币展望》阅读笔记
加密货币不可能死掉, 非常容易以各种形式生存下去早期加密货币的半数以上交易额是地下钱庄交易. 现在已经被投资和投机交易取代.加密货币不可能取代政府发行的货币,其影响到了美元人民币的主权利益加密货币面临 ...
- python变量类型&字符串的内建函数使用
python常用数据类型: 数字(整数int,浮点数float) 字符串 元组 列表 字典 一.格式化输出 1.1第一种格式化输出 %d整数 %f浮点数(用.*表示精确到多少位小数) %s字符串 % ...
- Linux 防火墙
目录 iptables配置 1. iptables 控制类型 2. 链表规则 3. iptables表 CentOS和RedHat 6.x CentOS和RedHat 7.x ufw ubuntu u ...
- SQL Server中授予用户查看对象定义的权限
SQL Server中授予用户查看对象定义的权限 在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程.函数.视图.表)的定义权限存.如果是部分存储过程.函数. ...