一、数据类型补充

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)的更多相关文章

  1. python基础--深浅copy(重点)

    在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 深浅copy(重点) 先问问大家,什么是拷贝?拷贝是音译的词,其实他是从copy这个英文单 ...

  2. Day7 - Python基础7 面向对象编程进阶

    Python之路,Day7 - 面向对象编程进阶   本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...

  3. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  4. Python基础 小白[7天]入门笔记

    笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...

  5. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  6. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  7. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  8. python基础之dict、set及字符

    python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...

  9. python 基础

    Python基础 三元运算(三目运算),是对简单的条件语句的缩写. # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成立,那么将 “值1” 赋值给result变量,否则, ...

  10. Python之路,Day7 - 面向对象编程进阶

    本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 经典类vs新式类 把下面代 ...

随机推荐

  1. Nginx 基础入门

    目录 Nginx 基础入门 1.Nginx简介 1.1.相关名词解释 2.Nginx优势 3.Nginx部署 4.Nginx配置文件 5.Nginx模块 6.Nginx配置文件 6.1.Locatio ...

  2. 关于CKCsec安全研究院

    关于CKCsec安全研究院 CKCsec安全研究院所有文档开源于语雀,会源源不断更新. 部分内容 微信公众号 知识星球 使用需知 由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均 ...

  3. RocketMQ 介绍与安装

    目录 RocketMQ 介绍 MQ 介绍 MQ 作用 MQ 缺点 MQ 常见产品 RocketMQ 简介 RocketMQ 架构 RocketMQ 安装 RocketMQ 介绍 MQ 介绍 定义: M ...

  4. CAX软件资产管理

    CAX软件其实指的是计算机辅助设计软件统称,即CAD.CAM.CAE.CAPP.CAS.CAT.CAI等各项技术的综合叫法,因为这些技术的缩写基本都是以CA为起始,X则表示所有.也就是说,CAX实际上 ...

  5. office 下载(免费使用

    https://otp.landian.vip/zh-cn/download.html

  6. Maven 框架结构知识总结

    1.maven目录结构 目录 内容 ${basedir} 存放pom.xml和所有子目录 ${basedir}/src/main/java 项目Java代码 ${basedir}/src/main/r ...

  7. golang中通过递归或通道实现斐波那契数列

    1. 循环实现 package main import "fmt" func fibonacciFor(nums int) (s1 []int) { // 循环实现斐波那切数列 n ...

  8. AOP操作-AspectJ注解

    AOP操作(AspectJ注解) 1,创建类,在类里面定义方法 2,创建增强类(编写增强逻辑) (1)在增强类里面,创建方法,让不同方法代表不同通知类型 3,进行通知的配置 (1)在spring配置文 ...

  9. 配置Nginx使用Active Directory 做认证

    配置Nginx使用AD做认证 nginx.conf 配置 http { ldap_server ldap { url ldap://xxx:389/DC=test,DC=com?sAMAccountN ...

  10. 论文解读(DFCN)《Deep Fusion Clustering Network》

    Paper information Titile:Deep Fusion Clustering Network Authors:Wenxuan Tu, Sihang Zhou, Xinwang Liu ...