Python day 06
day06 数据类型(四)
今日内容
- 集合
- 内存相关
- 深浅拷贝
补充
补充
列表
reverse,反转。
v1 = [1,2,3111,32,13] print(v1) # [1,2,311,32,13] v1.reverse() print(v1) # [13,32,311,2,1]
sort,排序
v1 = [11,22,3111,32,13] print(v1) v1.sort(reverse=False) # 从小到大(默认) print(v1) v1.sort(reverse=True) # 从大到小 print(v1)
字典
keys/values/items
get
info = {'k1':'v1','k2':'v2'} v1 = info['k11111'] v2 = info.get('k1111') # None就是Python中的空 v3 = info.get('k1111',666) print(v2) # None数据类型,改类型表示空(无任何功能,专门用于提供空值)
pop,有点像剪切的意思
info = {'k1':'v1','k2':'v2'} result = info.pop('k2') print(info,result) # del 是删除 del info['k1']
update
info = {'k1':'v1','k2':'v2'} # 不存在,则添加/存在,则更新 info.update({'k3':'v3','k4':'v4','k2':666}) print(info)
判断一个字符串中是否有敏感字符?
str
v = "人生苦短,我用python" if "python" in v: print('六神花露水')
list/tuple
v = ['glacier','周弘医','码云','麻花藤'] if "麻花藤" in v: print('糟老头子,坏滴很')
dict
v = {'k1':'v1','k2':'v2','k3':'v3'} # 默认按照键判断,即:判断x是否是字典的键。 if 'x' in v: pass # 请判断:k1 是否在其中? if 'k1' in v: pass # 请判断:v2 是否在其中? # 方式一:循环判断 flag = '不存在' for v in v.values(): if v == 'v2': flag = '存在' print(flag) # 方式二: if 'v2' in list(v.values()): # 强制转换成列表 ['v1','v2','v3'] pass # 请判断:k2:v2 是否在其中? value = v.get('k2') if value == 'v2': print('存在') else: print('不存在')
练习题
# 让用户输入任意字符串,然后判断此字符串是否包含指定的敏感字符。 char_list = ['麻花藤','麻花藤','glacier'] content = input('请输入内容:') # 我叫麻花藤 / 我是码云 / 我glacier最牛逼 success = True for v in char_list: if v in content: success = False break if success: print(content) else: print('都是大牛') # 示例: # 1. 判断 ‘v2’ 是否在字典的value中 v = {'k1':'v1','k2':'v2','k3':'v3'} 【循环判断】 # 2. 敏感字
内容详细
1. 集合 set
- 无序
- 无重复
v = {1,2,3,4,5,6,99,100}
# 疑问:v = {}
None
int
v1 = 123
v1 = int() --> 0
bool
v2 = True/False
v2 = bool() -> False
str
v3 = ""
v3 = str()
list
v4 = []
v4 = list()
tuple
v5 = ()
v5 = tuple()
dict
v6 = {}
v6 = dict()
set
v7 = set()
集合独有功能
add,添加元素
v = {1,2} v.add('glacier') v.add('glacier') print(v) # 猜一猜集合里有几个'glacier'
discard,删除元素
v = {1,2,'glacier'} v.discard('glacier') print(v) # 删除,丢弃一个元素,没有则不执行操作。
update,批量添加
v = {1,2,'glacier'} v.update({11,22,33}) print(v) # 批量添加一个合集的元素。
intersection,交集
v = {1,2,'glacier'} result = v.intersection({1,'glacier','码云'}) print(result) # {1,'glacier'}
union,并集
v = {1,2,'glacier'} result = v.union({1,'glacier','码云'}) print(result) # {1,2,'glacier','码云'}
difference,差集
v = {1,2,'glacier'} result = v.difference({1,'glacier','码云'}) # v 中有,而且({1,'glacier','码云'})没有 print(result) # {2} v1 = {1,'glacier','码云'} result1 = v1.difference({1,2,'glacier'}) print(result1)
symmetric_difference,对称差集
v = {1,2,'glacier'} result = v.symmetric_difference({1,'glacier','码云'}) print(result)
注意
# 1. 列表/字典/集合 -> 不能放在集合中+不能作为字典的key(unhashable) info = {1, 2, 3, 4, True, "国风", None, (1, 2, 3)} print(info) # 2. hash -> 哈希是怎么回事? 因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。 # 3. 特殊情况 info = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)} print(info) info = { 1:'alex', True:'oldboy' } print(info)
公共功能
len
v = {1,2,'glacier'} print(len(v))
for循环
v = {1,2,'glacier'} for item in v: print(item)
索引【无】
步长【无】
切片【无】
删除【无】
修改【无】
嵌套问题
# 1. 列表/字典/集合 -> 不能放在集合中+不能作为字典的key(unhashable) info = {1, 2, 3, 4, True, "国风", None, (1, 2, 3)} print(info) # 2. hash -> 哈希是怎么回事? 因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。 # 3. 特殊情况 info = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)} print(info) info = { 1:'glacier', True:'god' } print(info)
2. 内存相关
示例一
v1 = [11,22,33] v2 = [11,22,33] v1 = 666 v2 = 666 v1 = "asdf" v2 = "asdf" # 按理 v1 和 v2 应该是不同的内存地址。特殊: 1. 整型: -5 ~ 256 2. 字符串:"alex",'asfasd asdf asdf d_asdf ' # 字符串相同,地址也相同。 "f_*" * 3 # 字符串想乘 > 1 则地址不同。
示例二:
v1 = [11,22,33,44] v1 = [11,22,33]
示例三:
v1 = [11,22,33] v2 = v1 # 练习1 (内部修改) v1 = [11,22,33] v2 = v1 v1.append(666) print(v2) # 含 666 # 练习2:(赋值) v1 = [11,22,33] v2 = v1 v1 = [1,2,3,4] print(v2) # 练习3:(重新赋值) v1 = 'glacier' v2 = v1 v1 = 'god' print(v2)
示例四
v = [1,2,3] values = [11,22,v] # 练习1: v.append(9) print(values) # [11,22,[1,2,3,9]] # 练习2: values[2].append(999) print(v) # [1, 2, 3, 999] # 练习3: v = 999 print(values) # [11, 22, [1, 2, 3]] # 练习4: values[2] = 666 print(v) # [1, 2, 3]
示例五
v1 = [1,2] v2 = [2,3] v3 = [11,22,v1,v2,v1]
查看内存地址
v1 = [1,2,3] v2 = v1 v1.append(999) print(v1,v2) print(id(v1),id(v2)) v1 = [1,2,3] v2 = v1 print(id(v1),id(v2)) v1 = 999 print(id(v1),id(v2))
问题: == 和 is有什么区别?
- == 用于比较值是否相等。
- is 用于比较内存地址是否相等。
走你今儿
- 列表
- reverse
- sort
- 字典
- get (*)
- update
- 集合
- add
- discard
- update
- intersection (*)
- union
- difference
- .....
- 特殊:
- 嵌套:集合/字典的key
- 空:None
- 空集合:...
- id
- type
- 嵌套的应用: (*)
- 赋值
- 修改内部元素:列表/字典/集合
Python day 06的更多相关文章
- python进阶06 常用问题库(2)datetime模块 base64
python进阶06 常用问题库(2)datetime模块 base64 一.datetime模块(时间) 1.datetime.time() t=datetime.time(20,43,30,1) ...
- python笔记06
python笔记06 数据类型 上个笔记内容补充 补充 列表 reverse,反转. v1 = [1,2,3111,32,13] print(v1) v1.reverse() print(v1) v1 ...
- Python函数06/装饰器
Python函数06/装饰器 目录 Python函数06/装饰器 内容大纲 1.装饰器 1.1 开放封闭原则 1.2 装饰器 2.今日练习 内容大纲 1.装饰器 1.装饰器 1.1 开放封闭原则 扩展 ...
- Python面向对象06 /元类type、反射、函数与类的区别、特殊的双下方法
Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3 ...
- Python深入06 Python的内存管理
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 语言的内存管理是语言设计的一个重要方面.它是决定语言性能的重要因素.无论是C语言的 ...
- Python补充06 Python之道
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...
- Python学习06——列表的操作(2)
笨办法学Python第39节 之前用的第三版的书,昨天发现内容不对,八块腹肌又给我下了第四版,这次的内容才对上.本节的代码如下: ten_things = "Apples Oranges C ...
- Python学习--06切片
Python里提供了切片(Slice)操作符获取列表里的元素. 示例: >>> L = [1,2,3,4,5] # 取前2个元素,传统方法 >>> [L[0],L[ ...
- Python进阶06 循环对象
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 这一讲的主要目的是为了大家在读Python程序的时候对循环对象有一个基本概念. 循 ...
- python学习06
流控制 和函数 1)流控制 1.条件语句 if elif else if else 2.循环语句 while for 3.continue 和break continue是跳过本次循环,执行下一次循 ...
随机推荐
- 解读socketserver源码
解读python中SocketServer源码 再看继承 真正的大餐来之前,还是来点儿开胃菜!回顾一下关于类的继承的知识: 我们先看上面的代码,这是一个简单的类继承,我们可以看到父类Base和子 ...
- 2018(5)软件架构设计,架构风格,REST
2018上半年系统分析师试题五 阅读以下关于Web应用设计开发的描述,在答题纸上回答问题1至问题3. [说明] 某公司拟开发一个自由,可定制性强.用户界面友好的在线调查系统,以获取员工在课程学习.对公 ...
- linux怎么查看进程启动,用户的工作目录,pwdx,/proc/11256/cwd
linux 通过pid 寻找程序路径的最简单命令(pwdx) #pwdx pid号1 [pid2] .... 在linux实际操作命令中,查看pid的方式有很多种,通过pid找程序路径的方式也有 ...
- VisualVM监控远程服务器JVM
VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很 ...
- HDU 1520 树形DP入门
HDU 1520 [题目链接]HDU 1520 [题目类型]树形DP &题意: 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知 ...
- 解决:启用多线程调用webBrowsers函数报错:指定的转换无效
这里就需要委托. 定义一个 委托.加载之后给他绑定一个方法Callback,也就是所说的回掉函数. 然后写一个线程,线程需要一个object 的参数.将你定义的委托当作参数传进线程中的方法. 在线程中 ...
- Wed Sep 19 20:48:46 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection mus
Wed Sep 19 20:48:46 CST 2018 WARN: Establishing SSL connection without server's identity verificatio ...
- spring boot中使用@Async实现异步调用任务
本篇文章主要介绍了spring boot中使用@Async实现异步调用任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 什么是“异步调用”? “异步调用”对应的是“同步 ...
- windows中启动和终止nginx的两个批处理
文件:start_nginx.bat 内容: set nginx=D:\nginx-1.9.5\set php=D:\php\start /MIN %nginx%nginx.exestart /MIN ...
- 旷视研究院Detection组负责人
http://www.skicyyu.org/ https://zhuanlan.zhihu.com/p/61910297 俞刚,旷视研究院Detection组负责人.2014年博士毕业于新加坡南洋理 ...