python 深浅拷贝&集合
一、深浅拷贝
1.浅拷贝,只会拷贝第一层
s = [1, 'ss', '小可爱']
s1 = s.copy()
print(s1)
>>>
[1, 'ss', '小可爱']
s = [1, 'ss', '小可爱']
s1 = s.copy()
s1[0] = 3 #修改s1的值
print(s1)
>>>
[3, 'ss', '小可爱']
#浅拷贝,只会拷贝第一层,修改完s1里面列表的值后,数据源也会改变
s = [[1, 2], 'ss', '小可爱']
s1 = s.copy()
s1[0][1] = 3 #修改s1的值
print(s1)
print(s)
>>>
[[1, 3], 'ss', '小可爱']
[[1, 3], 'ss', '小可爱']
2.深拷贝 = 克隆一份
import copy s = [[1, 2], 'ss', '小可爱'] s1 = copy.deepcopy(s)
s1[0][1] = 3 #修改s1的值 print(s)
print(s1)
>>>
[[1, 2], 'ss', '小可爱']
[[1, 3], 'ss', '小可爱']
二、集合:
把不同的元素集合到一起,组成集合的成员不可重复如果有重复的元素保留一个
主要作用:
1.去重,把一个列表变成集合就自动去重了;
2.关系测试,交集、并集等关系
集合的创建:
a = set('xiaoss baby')
print(a) # 输出:{'a', 'y', 'b', 'o', 'x', ' ', 'i', 's'}
分类:可变集合、不可变集合
可变集合(set):可添加和删除元素,非可哈希的,不能做字典的键和其他集合的元素
不可变集合(frozenset):与上相反
基本操作:
li = ['xiao', 2, 5]
s = set(li) s.add('baby') #添加一个元素
print(s) s.update('ops') # 把要添加的字符串作为一个单独的序列加到集合里
print(s)
>>>
{2, 'xiao', 'baby', 5}
{2, 5, 'o', 'baby', 'p', 'xiao', 's'}
li = ['xiao', 2, 5]
s = set(li) s.update('ooo') # 重复的字符只添加一个到集合里
print(s)
>>>
{'o', 2, 'xiao', 5}
li = ['xiao', 2, 5]
s = set(li) s.update([12, 'baby']) # 添加多个元素要放到一个容器里
print(s)
>>>
{2, 5, 'baby', 12, 'xiao'}
#删除操作
li = ['xi', 2, 5]
s = set(li)
# 删除
s.remove(2) # ()里存放要删除的内容
s.pop() # 随机删除一个
s.clear() # 清空
del s # 直接删除整个集合
print(s)
>>>
print(set('qwer') == set('qwereq'))
# True 因为两者形成的集合结果一样,所以等价
print(set('qwer') < set('qwerty'))
#True < 表示后者包含前者
>>>
True
True
# 联合操作
print(set('qwer') or set('qwerty')) # 取两者共同的
print(set('qwer') and set('qwerty')) # 取两者包含的所有序列元素
>>>
{'w', 'e', 'q', 'r'}
{'w', 'y', 'r', 't', 'e', 'q'}
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7]) # intersection() 交集
print(a.intersection(b))
print(a & b) #同上 #union 并集
print(a.union(b))
print(a | b) #同上 # 差集(互相不在对方里面)
print(a.difference(b)) # 在a不在b 或print(a - b)
print(b.difference(a)) # 在b不在a 或print(b - a) # 反向交集
print(a.symmetric_difference(b)) # 父集
print(a.issuperset(b)) # 判断a是否完全包含于b # 子集
print(a.issubset(b))
>>>
{3, 4, 5}
{3, 4, 5}
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7}
{1, 2}
{6, 7}
{1, 2, 6, 7}
False
False
python 深浅拷贝&集合的更多相关文章
- 小学生都能学会的python(深浅拷贝)
小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...
- Python开发【第二章】:Python深浅拷贝剖析
Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...
- 【0806 | Day 9】三张图带你了解数据类型分类和Python深浅拷贝
一.数据类型分类 二.Python深浅拷贝
- 底层剖析Python深浅拷贝
底层剖析Python深浅拷贝 拷贝的用途 拷贝就是copy,目的在于复制出一份一模一样的数据.使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用copy技术,将copy出的各种副本去做各种不 ...
- python 小数据池 深浅拷贝 集合
1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同 ...
- python 深浅拷贝 元组 字典 集合操作
深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...
- python深浅拷贝与赋值
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- 深浅拷贝 集合(定义,方法) 函数(定义,参数,return,作用域) 初识
深浅拷贝 在python中浅拷贝 a=[1,2,3,4,]b=a.copy()b[0]='3333'print(a) #[1, 2, 3, 4] 浅拷贝一层并不会对a造成变化print(b) #[33 ...
- 关于python深浅拷贝的个人浅见
起初,关于python的深浅拷贝,总是习惯去用传值传址的方式去考虑,发现总是get不到规律,容易记混. python有着高度自治的内存管理,而不可变对象的内存分配,则是能省则省,就是说,无论用什么拷贝 ...
随机推荐
- 乐搏讲自动化测试-Python适用公司类型(6)
相信小伙伴们都知道,随着软件测试行业的发展和进步自动化测试已经成为必然.在竞争日益激烈的市场环境中也是你升职加薪的利器. 所以,小编决定从今天起!将要系统.连续.高质量的持续更新「整套自动化测试」文章 ...
- js实现打字效果
<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>js typing& ...
- iOS 上传APP到AppStore 卡在 Authenticating with the iTunes store 提示
上传APP的时候,遇到了问题,一直卡在Authenticating with the iTunes store提示这里, 解决办法:在Application Loader里面登录需要上传APP的开发者 ...
- linux 正确的关机方法
正确的关机方法 1. 查看系统的使用状态 执行who命令或者netstat -a ,要查看后台执行的程序可以执行“ps -aux” 2. 正确的关机命令 1)将内存中数据同步写入磁盘:sync,这个命 ...
- Tarjan UVALive 6511 Term Project
题目传送门 /* 题意:第i个人选择第a[i]个人,问组成强联通分量(自己连自己也算)外还有多少零散的人 有向图强联通分量-Tarjan算法:在模板上加一个num数组,记录每个连通分量的点数,若超过1 ...
- 题解报告:hdu 1087 Super Jumping! Jumping! Jumping!
Problem Description Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very ...
- 首先定义一个5X8的二维数组,然后使用随机数填充满。借助Arrays的方法对二维数组进行排序。
package day02; import java.util.Arrays; import java.util.Random; public class Test01 { public static ...
- Linux的proc文件系统 分类: linux 2014-06-02 10:21 623人阅读 评论(0) 收藏
proc为一个内核数据结构接口,用户空间和内核空间可以通过该接口通信, 与普通文件不同的是,这些虚拟文件的内容都是动态创建的. proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间. ...
- tac命令的实现 分类: linux 2014-06-02 00:08 344人阅读 评论(0) 收藏
此程序实现简化的linux中的tac命令.即对文件按行倒序输出. 首先将文件指针置于文件尾,从后向前移动指针, 将两个换行符'\n'间的内容作为一行输出. #include<stdio.h> ...
- html 相对定位 绝对 定位 css + div
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 0 Transitional//EN""http://www.worg/TR/xh ...