python之路(集合,深浅copy,基础数据补充)
一、集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列.
1.创建集合:
(1).set1 = {'abby', 'eric'}
result:{'eric', 'abby'}
(2).set2 = set({'abby', 'eric'})
result:{'abby', 'eric'}
2.增
set1 = {'abby','eric','allan','davy','skye'}
(1).set1.add('west')
result:{'west','abby','eric','allan','davy','skye'}
(2).set1.update('abc')#迭代新增
result:{'west','abby','a','eric','allan','c','davy','b','skye'}
3.删
set1 = {'abby','eric','allan','davy','skye'}
(1).set1.remove('abby')#指定删除
result:{'eric','allan','davy','skye'}
(2).set1.pop()#随机删除
result:{'abby','eric','allan','skye'}
(3).set clear()#清空集合
result:set()
(4).del set1#从内存删除集合
result:name 'set1' is not defined
4.关系测试:
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
(1).交集:
1:print(set1 & set2)
2:print(set1.intersection(set2)
result:{4,5}
(2).并集
1:print(set1 | set2)
2:print(set1.union(set2)
result:{1, 2, 3, 4, 5, 6, 7, 8}
(3).反交集
1:print(set1 ^ set2)
2:print(set1.symmetric_difference(set2)
result:{1, 2, 3, 6, 7, 8}
(4).差集
1:print(set1 - set2)
2:print(set1.difference(set2)
result:{1, 2, 3}
3.print(set2-set1)
4.print(set2.difference(set1)
result:{8, 6, 7}
(5)子集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2))
result:True
(5)超集
print(set2 > set1)
print(set2.issuperset(set1))
result:True
(6)冻结,不可变的数据类型
set1 = {1,2,3}
set3 = frozenset(set1)
result:frozenset({1, 2, 3})
面试题:list去重
l1 = [1,1,2,3,4,4,3,2,1,5,5]
set1 = set(l1)
l2 = list(set1)
print(l2)
二、深浅copy
1. 赋值运算
l1 = [1,2,3]
l2 = l1
l1.append(666)
print(l2)
print(id(l1))
print(id(l2))
result:
[1, 2, 3, 666]
2724735509128
2724735509128
2.浅copy
test01:
l1 = [1,2,3]
l2 = l1.copy()
l1.append(666)
print(l2)
result:[1, 2, 3]
test02:
l1 = [1,2,3,[22,]]
l2 = l1.copy()
l1.append(666)
print(l1,l2)
result:[1, 2, 3, [22], 666] [1, 2, 3, [22]]
test03:
l1 = [1,2,3,[22,]]
l2 = l1.copy()
l1[-1].append('abby')
print(l1,l2)
print(id(l1))
print(id(l2))
print(id(l1[-1]))
print(id(l2[-1]))
result:
[1, 2, 3, [22, 'abby']] [1, 2, 3, [22, 'abby']]
2586054582984
2586055807688
2586054582920
2586054582920
3.深copy
需要copy模块
import copy
l1 = [1,2,3,[22,]]
l2 = copy.deepcopy(l1)
l1.append(666)
print(l2)
result:[1, 2, 3, [22]]
总结深浅copy:都是copy,浅copy复制第一层独立存在,第二层与复制对象共同拥有.深copy复制所有层并且独立存在
面试题:
l1 = [1,2,3,[22,33]]
l2 = l1[:]
l1.append(666)
print(l2)
result:[1, 2, 3, [22, 33]]
总结:切片属于浅copy
三、基础数据补充
1.数据类型的转换
# str ---> list
s1 = 'abby eric west'
l1 = s1.split()
print(l1)
result:['abby', 'eric', 'west']
l1 = ['abby', 'eric', 'west']
s2 = ' '.join(l1)
print(s2)
result:abby eric west
# tuple <---> list
l1 = [1,2,3]
tu1 = tuple(l1)
print(tu1)
result:(1, 2, 3)
tu2 = (0,2,3)
l1 = list(tu2)
print(l1)
result:[0, 2, 3]
# dic ---> list
dic1 = {'name': 'alex', 'age': 1000}
l1 = list(dic1)
print(l1)
result:['name', 'age']
bool转换
0 " [] () {} set() ---> bool: False
四、enumerate枚举
字典用法:
dic01 = {'key1': 'value1','key2': 'value2', 'k3':'v3', 'name': 'abby'}
1.for i in enumerate(dic01,1):#1为索引起始位
print(i)
result:
(1, 'key1')
(2, 'key2')
(3, 'k3')
(4, 'name')
2.for a,b in enumerate(dic01,1):
print(a,b)
result:
1 key1
2 key2
3 k3
4 name
列表:li01 = [1,2,3,4,5,6,7,8]
for i in enumerate(li01,1):
print(i)
result:
(1, 1)
(2, 2)
(3, 3)
(4, 4)
(5, 5)
(6, 6)
(7, 7)
(8, 8)
for a,b in enumerate(li01,1):
print(a,b)
result:
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
python之路(集合,深浅copy,基础数据补充)的更多相关文章
- Python基础学习Day7 基础数据类型的扩展 集合 深浅copy
一.基础数据类型的扩展 1.1GBK ---> UTF - 8 # str --->bytes s1 = '太白' # 字符串是unicode编码 b1 = s1.encode('gbk' ...
- python学习笔记三 深浅copy,扩展数据类型(基础篇)
深浅copy以及赋值 对于字符串和数字而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1 = #n1 = 'hahahaha' #赋值n2 = n1#浅co ...
- Python 集合 深浅copy
一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...
- python集合深浅copy
一,集合. 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...
- 003_python的str切片,str常用操作方法,for循环,集合,深浅copy
基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余 + - * / ** %... 2.bool布尔值 判断真假以及作为条件变量 3.s ...
- python之路(三)-深浅拷贝
深浅拷贝用法来自copy模块. 导入模块:import copy 浅拷贝:copy.copy 深拷贝:deepcopy 字面理解:浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层.所 ...
- NO.3:自学python之路------集合、文件操作、函数
引言 本来计划每周完成一篇Python的自学博客,由于上一篇到这一篇遇到了过年.开学等杂事,导致托更到现在.现在又是一个新的学期,春天也越来越近了(冷到感冒).好了,闲话就说这么多.开始本周的自学Py ...
- 集合 & 深浅copy
集合: 特点:集合是可变的数据类型,但他里面的元素必须是不可变的数据类型,无序,不可重复. 创建: set1 = set({1,2,3}) 或者直接创建set2 = {1,2,3} 集合的增删查: 增 ...
- python列表中的深浅copy
列表中的赋值和平常的赋值是不一样的,看下面的代码: In [1]: a = 1 In [2]: b = a In [3]: a Out[3]: 1 In [4]: b Out[4]: 1 In [5] ...
随机推荐
- 《Head first设计模式》之抽象工厂
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类. 确保原料的一致 披萨店成功的关键在于新鲜.高质量的原料.要如何确保每家加盟店使用高质量的原料?你打算建造一家生成原料的 ...
- 09-SpringMVC03
今日知识 1. SpringMVC自定义异常处理 2. SpringMVC的interceptor(过滤器) SpringMVC自定义异常处理 1.web.xml正常写 <servlet> ...
- 《算法导论》第二章demo代码实现(Java版)
<算法导论>第二章demo代码实现(Java版) 前言 表示晚上心里有些不宁静,所以就写一篇博客,来缓缓.囧 拜读<算法导论>这样的神作,当然要做一些练习啦.除了练习题与思考题 ...
- 小程序在wxml页面格式化类似的2019-02-16T10:54:47.831000时间
其实新建小程序的时候,会有一个util.js文件,这个文件里已经有时间格式化的方法了,可是它却不能再wxml页面调用, 不过wxml页面是支持引入.wxs文件的,我们重新写一个这样子的工具文件就解决了 ...
- CVE-2020-0668-Windows服务跟踪中的普通特权升级错误
CVE-2020-0668-Windows服务跟踪中的普通特权升级错误 在这里中,我将讨论在Windows Service跟踪中发现的任意文件移动漏洞.从我的测试来看,它影响了从Vista到10的所有 ...
- 加密算法极先锋之MD5算法
在开发过程中,避免不了要涉及到数据加密,比如用户账号密码的加密,用户敏感数据的加密,涉及到的加密算法种类繁多,作为拿来主义的开发者时间精力有限,能够清楚其中主流的加密算法和用途,就已经足够了. 主要的 ...
- java开发规范学习
from 慕课网-明明如月-<阿里巴巴的Java开发手册> Integer缓存问题分析 1, Integer缓存[-128, 127]的数字,除此之外,将通过new创建. Long也是缓存 ...
- Android中实现自定义View组件并使其能跟随鼠标移动
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建An ...
- Re:连点器
连点器 介绍 顾名思义,可以连续点的机器. 当然,连续可快可慢:机器意味着不许要人工点击:可以是生活中的机器,也可以是电脑中的程序. 现在,连点器网上一搜一大堆,什么鼠标连点精灵,鼠大侠……不仅有电脑 ...
- 剑指offer-面试题59_1-滑动窗口的最大值-数组
/* 题目: 链接:https://www.nowcoder.com/questionTerminal/1624bc35a45c42c0bc17d17fa0cba788 来源:牛客网 给定一个数组和滑 ...