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是跳过本次循环,执行下一次循 ...
随机推荐
- ZPW-2000电气绝缘移频轨道电路
1.该轨道电路是个什么样子?(图片) 整个轨道电路不仅都在室外,其中还包括室内设备.其中室内设备包括发送器.接收器和衰耗盒.室内设备和室外设备通过一根电缆相连. 机柜 2.移频轨道电路有什么作用? z ...
- 队列->队列的表示和实现
文字描述 队列是和栈相反,队列是一种先进先出(first in first out,缩写FIFO)的线性表,它只允许在表的一端进行插入,而在另一端进行删除.和生活中的排队相似,最早进入队列的元素最早离 ...
- Numpy增加一列,指定概率指定参数
这里主要应用到numpy.random.choice 可以根据需求,比如增加一列,A B C 为该列数据,随机概率生成 详见代码 import numpy as np import pandas as ...
- ant 执行jmeter脚本
环境准备 1.jdk版本:java version "1.8.0_201" 2.jmeter版本:5.0 3.ant版本:Apache Ant(TM) version 1.10.5 ...
- 工程经验记录yolo框下移引发的思考
事件叙述: 缘起:yolo检测框,在项目开始之前由于在一些场景下观察到yolo的框在大车检测的时候,回归的位置不好,一些车辆的尾部会被漏掉,特别是车牌部分,恰好被框在外面的时候,在后续就无法进行车牌检 ...
- Python3学习之路~7.5 异常处理
1.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! try: pass except Excepti ...
- 图解:window与BOM的关系
window与BOM的关系: 1.https://www.jianshu.com/p/f5409202a835
- 使用纳米 Protocol buffers 作为序列化数据
使用纳米 Protocol buffers 作为序列化数据 Protocol Buffers 是 Google 公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化. 但是它更小, 更快, ...
- java实现控件的移动及使用鼠标改变控件大小
package cn.com.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; ...
- MVC中ajax调用API版信息分页显示
效果图: API端采用三层架构控制器显示界面: UserBll bll = new UserBll(); //获取用户所有信息 [HttpGet] ,) { List<UserInfo> ...