Python基础—set、copy(Day7)
一、数据类型补充
1.str:.isspace()字符串是空格或至少是一个空格。
s='alex'
s1=' '
ret=s1.isspace()
print(ret)
执行结果:True
2.tul: 对于元组如果只有一个元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型。
tu=(1)
tu1=(1,)
print(tu,type(tu))
print(tu1,type(tu1)) 执行结果:
1 <class 'int'>
(1,) <class 'tuple'>
3.list:在循环一个列表示,最好不要进行删除的动作,一旦删除索引会随之变化,容易出错(如果一定要删除可以倒着删)。
例:将索引为奇数的元素删除
#方法1通过循环查找索引为偶数的元素添加到新的list
li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
l1=[]
for i in range(len(li)):
if i % 2==0:
l1.append(li[i])
li=l1
print(li) 执行结果:['老男孩', 'alex', 'egon', '女神']
#方法2直接切片删除
li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
del li[1::2]
print(li) 执行结果:['老男孩', 'alex', 'egon', '女神']
#方法3通过循环倒着删除
li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
for i in range(len(li)-1,-1,-1):
if i % 2==1:
del li[i]
print(li) 执行结果:['老男孩', 'alex', 'egon', '女神']
4.dict : dict.fromkeys('可迭代对象',‘值’)
dic=dict.fromkeys('abc','alex')
print(dic)
执行结果:
{'a': 'alex', 'b': 'alex', 'c': 'alex'}
dic=dict.fromkeys([1,2,3],[])
print(dic)
dic[1].append('老男孩')
print(dic) 执行结果:
{1: [], 2: [], 3: []}
{1: ['老男孩'], 2: ['老男孩'], 3: ['老男孩']}
在循环字典时不能改变字典的大小,不能增加或删除此字典的键值对。
例:将字典中含有k元素的键对应的键值对删除
dic = {'k1':'value1','k2':'value2','name':'wusir'}
for i in dic:
if 'k' in i:
del dic[i]
执行结果:报错
l1=[] #添加到一个列表中进行删除
for i in dic:
if 'k' in i:
l1.append(i)
for i in l1:
del dic[i]
print(dic) 执行结果:
{'name': 'wusir'}
5.数据类型转换
tuple---->list list(tu)
tu=(1,2,3)
li=list(tu)
print(li) 执行结果:
[1, 2, 3]
list---->tuple tuple(li)
l1=[1,2,3]
tul=tuple(l1)
print(tul) 执行结果:
(1, 2, 3)
#0、''、[]、()、{} 空字符串、列表、元组、字典转化为bool都为False
二、set集合
集合是不重复的、无序的,它里面的元素是可哈希的,它本身是不和哈希的,不能作为字典的key。
集合的作用:
1.去重
把一个列表变成集合就自动去重了
li=[11,11,22,22,33,33,33,44]
li=list(set(li))
print(li) 执行结果:
[33, 11, 44, 22]
2.数据关系测试,测试两组数据之前的交集、差集、并集等关系。
1)集合的增:
1. set.add(' ')
set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('女神')
print(set1)
执行结果:
{'alex', 'ritian', 'barry', '女神', 'egon', 'wusir'}
2.set.update([1,2,3]) 迭代增加
set1 = {'alex','wusir','ritian','egon','barry'}
set1.update([1,2,3])
print(set1)
执行结果:
{1, 2, 3, 'wusir', 'barry', 'alex', 'egon', 'ritian'}
2)集合的删
1.Set.remove(‘元素’)
set1 = {'alex','wusir','ritian','egon','barry'}
set1.remove('alex')
print(set1)
执行结果:
{'wusir', 'egon', 'barry', 'ritian'}
2.set.pop()随机删除
3.set.clear() set()空集合
4.del set 删除集合
3)集合的查
for循环查
set1 = {'alex','wusir','ritian','egon','barry'}
for i in set1:
print(i)
执行结果:
ritian
wusir
barry
egon
alex
4)集合的其他操作
1.交集 &和set.intersection()
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 & set2)
print(set1.intersection(set2))
执行结果:
{4, 5}
{4, 5}
2.反交集 ^和set.symmetric_difference()
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))
执行结果:
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}
3.并集 |和set.union()
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 | set2)
print(set1.union(set2))
执行结果:
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
4.差集 set1-set2
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1-set2)
执行结果:
{1, 2, 3}
5.子集 set.issubset()
set1={1,2,3}
set2={1,2,3,4,5,6}
print(set1.issubset(set2))
执行结果:
True
6.超集 set.issuperset()
set1={1,2,3}
set2={1,2,3,4,5,6}
print(set2.issuperset(set2))
执行结果:
True
三、深浅copy
1.赋值运算:对于赋值运算指向的是同一内存地址,dict、list、set都是一样的。
l1=[1,2,3]
l2=l1
l2.append(111)
print(l1,l2) 执行结果:
[1, 2, 3, 111] [1, 2, 3, 111]

2.浅copy:不是指向一个,而是又开辟了一个存储空间,对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以对于第二层以及更深的层数来说,保持一致性。
l1=[1,2,3]
l2=l1.copy()
l1.append(111)
print(l1,l2) 执行结果:
[1, 2, 3, 111] [1, 2, 3]
l1=[1,2,3,['guo','li']]
l2=l1.copy()
print(l1,id(l1))
print(l2,id(l2)) 执行结果:
[1, 2, 3, ['guo', 'li']] 427213865032
[1, 2, 3, ['guo', 'li']] 427213868744
l1=[1,2,3,['guo','li']]
l2=l1.copy()
l1[3][0]='wu'
print(l1,id(l1[3])) #[1, 2, 3, ['wu', 'li']] 769433489352
print(l2,id(l2[3])) #[1, 2, 3, ['wu', 'li']] 769433489352

3.深copy deep.copy:对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
import copy
l1=[1,2,[1,2,3],4]
l2=copy.deepcopy(l1)
l1[2].append(666)
print(l1,id(l1[2])) #[1, 2, [1, 2, 3, 666], 4] 893847315656
print(l2,id(l2[2])) #[1, 2, [1, 2, 3], 4] 893847281352
4.切片浅copy
l1=[1,2,3,[22,33]]
l2=l1[:]
l1[3].append(666)
print(l2) #[1, 2, 3, [22, 33, 666]]
Python基础—set、copy(Day7)的更多相关文章
- python基础--深浅copy(重点)
在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 深浅copy(重点) 先问问大家,什么是拷贝?拷贝是音译的词,其实他是从copy这个英文单 ...
- Day7 - Python基础7 面向对象编程进阶
Python之路,Day7 - 面向对象编程进阶 本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- Python基础 小白[7天]入门笔记
笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- python基础之dict、set及字符
python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...
- python 基础
Python基础 三元运算(三目运算),是对简单的条件语句的缩写. # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 “值1” 赋值给result变量,否则, ...
- Python之路,Day7 - 面向对象编程进阶
本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 经典类vs新式类 把下面代 ...
随机推荐
- Hive分区表和桶表的使用
原文链接: https://www.toutiao.com/i6766897068138037763/?group_id=6766897068138037763 我们看官网文档中这个地方 我们先创建好 ...
- ElasticSearch的应用
一.介绍 全文检索技术: 分布式: Restful风格: 近实时搜索 二.部署 下载:https://thans.cn/mirror/elasticsearch.html 新建用户,并登录: 解压: ...
- 【洛谷】P1067 多项式输出
原题链接:P1067 多项式输出 题目分析:学长推荐的OJ网站 --洛谷,发现挺好用的还可以下载提交出错的数据. 废话就不多说了,这道题属于基础题.提交出错主要是因为一些小细节不到位,这里就不一一赘述 ...
- WebRTC本地选择codec(web本地模拟)
视频编码后,再进行发送.WebRTC建立视频连接前,可以选择codec.一般来说支持多种codec,以VP8和H264为代表. Codec: 编码译码器,编解码器 示例代码 写一个示例,用户可以在发送 ...
- 【C++】自定义数据类型
自定义数据类型 标签:c++ 目录 自定义数据类型 一.结构体 定义方法: 特点: 成员访问方式: 初始化: 结构数组 指针和动态内存分配: 结构变量作为函数参数: 二.联合 定义方法: 特点: 举例 ...
- 论文解读(DFCN)《Deep Fusion Clustering Network》
Paper information Titile:Deep Fusion Clustering Network Authors:Wenxuan Tu, Sihang Zhou, Xinwang Liu ...
- maven 中的工程依赖和层级依赖?
一.什么是工程依赖? 思考问题?1.1一旦开始分模块开发的时候,之前的所有包都会被拆分成一个一个的项目 model mapper service ... 其实mapper需要model的支持,怎么解决 ...
- Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解
datetime 时间和日期模块 datetime 模块提供了以简单和复杂的方式操作日期和时间的类.虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作.该模块还支持可感知时区的 ...
- X000001
一些相互无关联的题目的集合 都是码量不大,略有思维难度的题 做起来还是很舒适的 P6312 [PA2018]Palindrom 空间限制很小,不足以存下整个字符串,故暴力判断不可行. 考虑使用字符串哈 ...
- JOISC 2017
Day1 「JOISC 2017 Day 1」开荒者 首先观察部分分发现分档很多,于是考虑一步步思考上来. 首先有一点关键观察(一): 风吹的顺序是无所谓的,令分别往东.西.南.北吹了 \(r, l, ...