Python基础知识-06-集合内存布尔False
1、判断一个字符串中是否有敏感字符?
#str:
m_str="我叫魔降风云变"
if "魔" in m_str: #判断指定字符是否在某个字符串中
print("含敏感字符")
---------结果:
含敏感字符 #list/tuple:
方法一:for循环
char_list=["mcw","xiaoma","xiaxiao"]
content=input("请输入内容:")
success=False #什么时候用success这种标志,前面还有个message的类似的
for i in char_list: #判断字符串是否在指定列表中
if i==content:
success=True
break
if success:
print("包含敏感字符")
------------结果:
请输入内容:mcw
存在敏感字符 方法二:in
char_list=["mcw","xiaoma","xiaxiao"]
content=input("请输入内容:")
if content in char_list:
print("存在敏感字符")
-----------结果:
请输入内容:mcw
存在敏感字符 #dic
v = {'k1':'v1','k2':'v2','k3':'v3'}
# 默认按照键判断,即:判断x是否是字典的键。
if 'x' in v:
print(True)
# 请判断:k1 是否在其中?
if 'k1' in v: #判断是否是字典的键
print(True)
# 请判断:v2 是否在其中?
# 方式一:循环判断
flag = '不存在'
for i in v.values(): #判断是否是字典的值
if i == 'v2':
flag = '存在'
print(flag)
# 方式二:
if 'v2' in list(v.values()): # 强制转换成列表 ['v1','v2','v3']
print(True)
# 请判断:k2:v2 是否在其中?
value = v.get('k2') #判断键值对是否在字典。先确定键是否存在,再确定值是否相等
if value == 'v2':
print('存在')
else:
print('不存在')
2、集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
2.1创建集合
创建格式:
parame = {value01,value02,...}
或者
set(value)
set={"mcw","xiaoma","xiaoma",,True}
print(set)
------------------结果:
{'mcw', 'xiaoma', } #集合有去重功能,每次执行一次,元素排序发生改变,说明集合是无序的.集合里面元素 0 FALSE ; 1 Ture 算是重复值,也会去重
>>> set={"mcw","xiaoma","xiaoma",1,True}
>>> "mcw" in set #快速判断元素是否在集合内
True
>>> "xiao" in set
False
mcw=set() #定义空集合,空集合布尔值为False
print(mcw,bool(mcw))
-----------结果:
set() False
2.2集合独有功能 -添加
集合.add(集合元素)
>>> set={"mcw",,True,(,)}
>>> set.add("xiaoma")
>>> print(set)
{'mcw', , 'xiaoma', (, )}
集合.update(集合,列表等等)
>>> set={"mcw",,True,(,)}
>>> set.update({"mcw","xiaoma"}) #update重复的不管,没有的添加进集合
>>> print(set)
{'mcw', , (, ), 'xiaoma'}
>>> set={"mcw",1,(1,2)}
>>> set.update([3,4])
>>> print(set)
{(1, 2), 1, 3, 4, 'mcw'}
2.3删除(集合无序不重复,所以不能用索引删除)
集合.discard(集合元素)
>>> set={"mcw",,(,)}
>>> set={"mcw",,True,(,),"xiaoma","ming"}
>>> set.discard((,)) #似乎删除的是单个
>>> print(set)
{'mcw', , 'xiaoma', 'ming'}
2.4修改,因为无法定位,无法修改,能重新定义
2.5集合交并差以及集合运算
集合2的位置都可以是列表、元组,交集并集等都是生成新的集合,结果都是赋给新的集合
交集
交集=集合1.intersection({集合2})
>>> set={,}
>>> jiao=set.intersection({,,})
>>> print(jiao)
{}
并集
并集=集合1.union({集合2})
>>> set={,}
>>> bing=set.union({,,})
>>> print(bing)
set([, , , ])
差集
差集=集合1.difference(集合2) #自我注解:集合1与2比较,1在2中1有什么不同的元素。所以1有,2没有 $1与2的差集,1-2,就是在1中减去与2相同的元素后1中剩下的元素
set1={,}
set2={,,}
cha=set1.difference(set2)
print(cha)
--------------结果:
{}
对称差集 #二者元素和再去掉二者共有的。
对称差集=集合1.symmetric_difference(集合2)
set1={,}
set2={,,}
duichencha=set1.symmetric_difference(set2)
print(duichencha)
--------------结果:
{, , }
集合运算
图片修改部分内容(更精确的描述):a与b的交集取反,不同时在a和b的两个集合的元素
>>> a=set('abcd')
>>> b=set('cdfe')
>>> a
{'d', 'b', 'c', 'a'}
>>> a-b #集合a中包含而集合b中不包含的元素 $a与b中的差集,在a但不在b的元素 %%%a-b差集,就是在a中减去和b相同的元素剩下来的a的元素
{'a', 'b'}
>>> a|b #集合a或b中包含的所有元素 $a与b的并集,在a或在b的元素
{'e', 'f', 'c', 'b', 'd', 'a'}
>>> a & b # 集合a和b中都包含了的元素 $a与b的交集,在a且在b的元素
{'d', 'c'}
>>> a^b # 不同时包含于a和b的元素 $a与b的交集取反,不同时在a和b的两个集合的元素
{'e', 'f', 'b', 'a'}
2.6#公共功能:只有len,for循环的公共功能
len
for循环
索引 无
步长 无
切片 无
删除 无
修改 无
set={,}
print(len(set))
-------结果: set={"mcw","xiaoma","ming"}
for i in set:
print(i)
----------结果:
ming
xiaoma
mcw
2.7集合的嵌套
集合里面可以存放整型,布尔 字符串 None 等等
>>> print({,"xiaoma",False,(,),None})
{False, , (, ), 'xiaoma', None}
不能放列表 报错 unhashable type 列表/集合/字典不能放入集合,也不能作为 字典的key(unhashable)
>>> set={{,},"xiaoma"}
Traceback (most recent call last):
File "<pyshell#34>", line , in <module>
set={{,},"xiaoma"}
TypeError: unhashable type: 'set'
>>> set={[,],"xiaoma"}
Traceback (most recent call last):
File "<pyshell#35>", line , in <module>
set={[,],"xiaoma"}
TypeError: unhashable type: 'list'
>>> set={{"name":"mcw"},"xiaoma"}
Traceback (most recent call last):
File "<pyshell#36>", line , in <module>
set={{"name":"mcw"},"xiaoma"}
TypeError: unhashable type: 'dict'
2.8hash
判断什么是否在列表里,for循环/in方法 遍历列表很慢
集合, 给元素计算hash值,并存放到hash表,hash值指向内存地址,效率比遍历列表快。
字典里面也会hash,hash键,并放在内存一个地址。根据key,直接定位找到value,速度快。在字典和集
合中查询是否存在某个元素,效率等价。
hash是怎么回事?
因为在内部会将值进行哈希算法并得到一个值(这个值映射到实际存储的内存地址),以后根据值作为索引,实现快速查找
2.9集合特殊情况(0 False ;1 Ture会去重)
集合里面元素 0 FALSE 1 Ture 是重复值,由于集合元素具有唯一性,所以会做去重的
字典里的键也具有唯一性,所以也会自动做去重操作
info ={:,True:}
print(info)
---------结果:
{: }
3、内存相关的东西 赋值和修改要区别开来,赋值(重新定义)是重新开辟内存,修改是原内存空间内的改变
3.1赋值(定义)和修改
定义两个列表,字符串,都是重新开辟内存地址。两块内存地址
>>> li1=["mcw","xiaoma"]
>>> li2=["mcw","xiaoma"]
>>> id(li1) >>> id(li2)
定义一个变量,给变量重新赋值,重新开辟内存空间。原值内存地址如果没有指定它的那么就会成为垃圾,垃圾回收机制会回收内存地址
>>> li=["mcw","xiaoma"]
>>> id(li) >>> li=["ming","tian"]
>>> id(li)
定义变量1,定义变量2=变量1,变量1有内存地址,变量2指向变量1的内存地址
>>> li=["mcw","xiaoma"]
>>> li1=["mcw","xiaoma"]
>>> li2=li1
>>> id(li1) >>> id(li2)
v1=
v2=v1
v1=[原]
v2=v1
v1=[新]
print(v2) #[原]
思考,再对v2操作,结果?
-----------
v=[1,2,3]
valuse=[11,22,v]
v.append(9)
v发生变化,values发生变化,values里的v指向v的内存地址
v=999
values还是原来的地址,人眼看的v只是一个外部表现形式,其实内部执行时表现形式是内存地址
v只是内存地址指向吗?
什么时候成为垃圾,没有人指向它的时候(自我思考:那么有人指向的时候是不是有标记记录呢)
查看内存地址的函数:
id(变量)
3.2Python的内部缓冲机制实现性能优化
Python缓冲机制,为了提高性能的优化方案,常用的没有重新开辟内存空间,而是指向内存中已存在的
地址。Python数据的小数据池,常用字符串,浮点型等缓存
1、整型-5到256 缓存,不重新开辟
2、字符串: "f_*"*3 包含特殊字符串的会重新开辟内存。
列表,元组等就不是这样了。
--------
案例分析:
a=1
b=1 按理说应该重新开辟内存,但是Python为了提高性能,有缓存机制,-5到256,所以内存地址一样
a=1
b=a 内存地址一样
>>> a=-
>>> b=-
>>> id(a) >>> id(b) >>> a=-
>>> b=-
>>> id(a) >>> id(b) >>> a=
>>> b=
>>> id(a) >>> id(b) >>> a=
>>> b=
>>> id(a) >>> id(b)
-------
3.3 问题:==和is的区别是什么
v1==v2 ==比较值是否相等 返回布尔值
v1 is v2 is比较的内存地址是否一致 返回布尔值
>>> v1=
>>> v2=
>>> bool(v1==v2)
True
>>> v1 is v2
False
>>> id(v1) >>> id(v2)
如果v1,v2的值符合Python缓冲机制里面的要求,那么v1==v2 ,v1 is v2 返回的是一样的
>>> v1=
>>> v2=
>>> bool(v1==v2)
True
>>> v1 is v2
True
>>> id(v1) >>> id(v2)
-----
4、布尔返回值是False的有哪些?
>>> print(bool()) #数字0
False
>>> print(bool(())) #空元组
False
>>> print(bool([])) #空列表
False
>>> print(bool({})) #空字典
False
>>> print(bool(None)) #None
False
>>> print(bool("")) #空字符串
False
>>> print(bool(set())) #空集合
False
>>> bool(False) #False
False
#备注:3+5空
python 字节码和汇编语言是同级别的
Python基础知识-06-集合内存布尔False的更多相关文章
- Python基础(4)_集合、布尔类型
一.集合 集合的作用一:关系运算集合的作用二:去重 定义集合:集合内的元素必须是唯一的:集合内的元素必须是可hash的,也是就不可变类型:集合是无序的 s={'egon',123,'egon','1' ...
- python基础知识 -- set集合
Set集合:是Python的一个基本数据类型.一般不是很常用.Set中的元素是不重复的,无序的,里面的元素必须是可hash的(int,str,tuple,bool).我们可以这样来计Set就是dict ...
- python基础知识笔记-集合
集合使用花括号将元素之间用逗号隔开即可.集合的输出里不会出现相同的元素.集合中有并集.交集.差集等,以下为一些简单的表达: def main(): list1=[1,1,2,2,3,3] print( ...
- Python基础知识:集合
1.集合(set)是一个存放在中括号内的无序,不重复的序列.例如:set = {'1','12','25'} 2.创建集合的两种方法: set = {1,2,3} 中括号直接创建 set = {[1, ...
- python基础知识(集合)
集合 可变集合set()/不可变集合frozenset() {} 大写的拉丁字母 用于保存不重复元素.无序不能通过索引来获取 集合的创建 空集合 使用set()函数 变量名 = set() 集合的添 ...
- Python基础知识(六)------小数据池,集合,深浅拷贝
Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : 一个文 ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- python基础知识小结-运维笔记
接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...
随机推荐
- 有关集合的foreach循环里的add/remove
转自:Hollis(微信号:hollischuang) 在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 1 .foreach循环 ...
- MySql多表关联,根据某列取前N条记录问题
近来遇到一个问题:“MySql多表关联,根据某列取前N条记录”. 刚开始一直在想,SQL语句是否可以做到直接查询出来,但几经折磨,还是没能写出SQL语句,-------如果有大牛的话,望指点迷津.我把 ...
- 弄清Spark、Storm、MapReduce的这几点区别才能学好大数据
很多初学者在刚刚接触大数据的时候会有很多疑惑,比如对MapReduce.Storm.Spark三个计算框架的理解经常会产生混乱. 哪一个适合对大量数据进行处理?哪一个又适合对实时的流数据进行处理?又该 ...
- exynos4412—链接脚本复习
在u-boot下,定义变量, 编译,编译完后 使用arm-linux-nm arm 没有去头的二进制可执行文件 都在BSS段,均为初始化. 打印之后会出算随机值. 目前还处于uboot阶段,如 ...
- 基于visual studio 2017 以及cubemx 搭建stm32的开发环境(1)
参考如下文档: 传送门:http://www.stm32cube.com/article/128 如果链接不存在的话,下载我截屏好的图: 传送门:https://pan.baidu.com/s/1NC ...
- 使用HtmlAgilityPack将HtmlTable填入DataTable
HtmlAgilityPack.HtmlWeb hw = new HtmlAgilityPack.HtmlWeb(); HtmlAgilityPack.HtmlDocument doc = hw.Lo ...
- WPF几个基础概念的浅显理解
1.逻辑树与视觉树 逻辑树在结构上与xaml文件对应 视觉树更细化,拆分到控件的每个组成部分 2.依赖属性与附加属性 依赖属性:就是自己自己没有属性值,而是通过Binding从数据源获得值,就是依赖在 ...
- Docker学习笔记-Windows系统支持(一)
Docker对windows的支持情况: 一.Docker for Windows ServerDocker Enterprise Edition for Windows Server 2016htt ...
- 20155313 2016-2017-2 《Java程序设计》第四周学习总结
20155313 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 6 继承与多态 面对对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就 ...
- echarts 柱状图移除圆角
itemStyle: { normal: { color: '#59519f', barBorderColor: '#59519f', barBorderWidth: 6, barBorderRadi ...