系统学习python第六天学习笔记
1.补充
1.列表方法补充
reverse,反转。
v1 = [1,2,3111,32,13] print(v1) v1.reverse() print(v1)
sort,排序
v1 = [11,22,3111,32,13] print(v1) # v1.sort(reverse=False) # 从小到大(默认) # v1.sort(reverse=True) # 从大到小 # print(v1)
2.字典方法补充
keys/values/items
get
- 判断字典中是否存在键,不存在则返回None,存在则取对应的值并返回赋值给变量
info = {'k1':'v1','k2':'v2'} # v1 = info['k11111'] # v2 = info.get('k1111') # None就是Python中的空 # v3 = info.get('k1111',666) # print(v2) # None数据类型,改类型表示空(无任何功能,专门用于提供空值)
pop
- 删除,也可以用del删除
info = {'k1':'v1','k2':'v2'} result = info.pop('k2') print(info,result) del info['k1']
update
- 不存在,则添加/存在,则更新
info = {'k1':'v1','k2':'v2'} # 不存在,则添加/存在,则更新 info.update({'k3':'v3','k4':'v4','k2':666}) print(info)
3.判断一个字符串中是否有敏感字符?
str
v = "Python全栈21期" if "全栈" in v: print('含敏感字符')
list/tuple
v = ['alex','oldboy','藏老四','利奇航'] 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 = ['利奇航','堂有光','炸展会'] content = input('请输入内容:') # 我叫利奇航 / 我是堂有光 / 我要炸展会 success = True for v in char_list: if v in content: success = False break if success: print(content) else: print('包含铭感字符') # 示例: # 1. 昨天课上最后一题 # 2. 判断 ‘v2’ 是否在字典的value中 v = {'k1':'v1','k2':'v2','k3':'v3'} 【循环判断】 # 3. 敏感字
注意点:
可设置一个标签来判断状态
char_list = ['利奇航','堂有光','炸展会'] content = input('请输入内容:') success = True # 标签判断状态 for v in char_list: if v in content: success = False break if success: print(content) else: print('包含铭感字符')
2.集合 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('Lishaoqi') # v.add('Lishaoqi') # print(v)
discard 删除
# v = {1,2,'李邵奇'} # v.discard('李邵奇') # print(v)
update 批量添加
# v = {1,2,'李邵奇'} # v.update({11,22,33}) # print(v)
intersection 交集
# v = {1,2,'李邵奇'} # result = v.intersection({1,'李邵奇','小黑'}) # print(result)
union 并集
# v = {1,2,'李邵奇'} # result = v.union({1,'李邵奇','小黑'}) # print(result)
difference 差集
# v = {1,2,'李邵奇'} # result = v.difference({1,'李邵奇','小黑'}) # v中有且{1,'李邵奇','小黑'}没有 # print(result) # v1 = {1,'李邵奇','小黑'} # result1 = v1.difference({1,2,'李邵奇'}) # print(result1)
symmetric_difference 对称差集
# v = {1,2,'李邵奇'} # result = v.symmetric_difference({1,'李邵奇','小黑'}) # print(result)
注意:交集、并集和差集括号内传入参数时,可以同样是集合,也可以是列表和元组
公共功能
len
v = {1,2,'李邵奇'} print(len(v))
for循环
v = {1,2,'李邵奇'} for item in v: print(item)
索引【无】
步长【无】
切片【无】
删除【无】
修改【无】
嵌套问题
- 哈希问题
列表/字典/集合:不能放在集合中,也不能作为字典的key(unhashable)
# 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) # 此时不打印False # info = { # 1:'alex', # True:'oldboy' # } # 此时没有key为True的键,而是'oldboy'将'alex'覆盖 # print(info)
3.内存相关
示例一
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 - 重新开辟内存。
特殊:
# 按理 v1 和 v2 应该是不同的内存地址。特殊:
1. 整型: -5 ~ 256
2. 字符串:"alex",'asfasd asdf asdf d_asdf '
----"f_*" * 3 - 重新开辟内存。
示例二:
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 = 'alex' v2 = v1 v1 = 'oldboy' 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有什么区别?
v1 = [1, 2, 3, 4] v2 = [1, 2, 3, 5, 6] v1 == v2 ----> False v1 is v2 ----> False v1 = [1, 2] v2 = [1, 2] v1 == v2 ----> True v1 is v2 ----> False v1 = [1, 2, 3] v2 = v1 v1 == v2 ----> True v1 is v2 ----> True
- == 用于比较值是否相等。
- is 用于比较内存地址是否相等。
系统学习python第六天学习笔记的更多相关文章
- 学习python网络数据采集笔记-1、2章
英文不好只能看中文版的.邮电出版社翻译的真很烂. 以上是吐槽,以下是正文. 书中用的pthon 3.X版本,建议安装python3.4以上的版本,低版本的没有自带pip安装插件会比较麻烦. 下载地址: ...
- 学习Python第六天
今天我们讲讲数据类型中的集合,博客写得有点糙,后续应该要进行优化优化了........ 集合:无序,不重复的数据组合,主要作用:去重,把一个列表变成集合,就自动去重了 基本语法:S = {1}类型为集 ...
- [IT学习]Python pandas 学习
今天学习pandas来处理数据,结果用python 3.5.0的shell来调试,总是报错. 报错中包含如下字样: Traceback (most recent call last): File &q ...
- python学习笔记(一)之为什么学习python
python的特点: 跨平台 实现同一个功能是Java代码的1/5 python应用范围: 操作系统 web 3D动画 企业应用 云计算 如何学习python? 学习语法 验证例子 学会总结 课外实践
- D03——C语言基础学习PYTHON
C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...
- 零基础学习Python数据分析
网上虽然有很多Python学习的教程,但是大多是围绕Python网页开发等展开.数据分析所需要的Python技能和网页开发等差别非常大,本人就是浪费了很多时间来看这些博客.书籍.所以就有了本文,希望能 ...
- python的学习研究
2017年5月8日-----开始学习python 为什么学习python? 感觉做爬虫很酷,我又不喜欢Java,所以就学python 提升自己,入行PHP到这个月底半年,想更多的扩展自己,让自己增值 ...
- Python进阶学习之特殊方法实例详析
Python进阶学习之特殊方法实例详析 最近在学习python,学习到了一个之前没接触过的--特殊方法. 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init_ ...
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
随机推荐
- django 中从外界借助多个网站时 static 的存放和整理
在 模板之家中 前端页面直接上去抓取 可是遇到重复 或者 版本不统一 所以 在每个app下面建立自己的 stastic 在制作的html 页面上方 导入静态页面 {% load static ...
- cf 782# A.Andryusha and Socks B.The Meeting Place Cannot Be Changed C.Andryusha and Colored Balloons
看来快掉到灰名的蒟蒻涨rating也快... A题模拟一下就好(一开始还sb,, #include<bits/stdc++.h> #define LL long long using na ...
- 六十七、SAP中内表插入的三种方法之一,APPEND的使用
一.如果内表是一个普通的内表,只用于存储数据不用来排序,那么优先选择APPEND插入 二.我们运行程序,并把工作区和内表加入到断点变量,如图所示,1X22的意思如图 三.我们点击ITAB1,来看内表数 ...
- border-radius 在 浏览器开发者工具移动端里是有效的,在真机是无效的。
border-radius 在 浏览器开发者工具移动端里是有效的,在真机是无效的,怎么解决? 答案是 border-radius:20px !important 加上!important 就好了.
- ZOJ 3795 Grouping 强连通分量-tarjan
一开始我还天真的一遍DFS求出最长链以为就可以了 不过发现存在有向环,即强连通分量SCC,有向环里的每个点都是可比的,都要分别给个集合才行,最后应该把这些强连通分量缩成一个点,最后保证图里是 有向无环 ...
- Eclipse 中打开工程目录的插件
我们想在Eclipse中的打开工程目录,Eclipse 自身没有这个功能,我们可以安装一个插件来实现这个功能.具体的操作方法如下: (1).到以下链接中下载插件:https://github.com/ ...
- redis十-对快照模式分析
复制自:http://www.cnblogs.com/huangxincheng/p/5010795.html 一:快照模式 或许在用Redis之初的时候,就听说过redis有两种持久化模式,第一种是 ...
- Django static配置
STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static&q ...
- win10 metasploit-framework 安装
1.metasploit.com官网下载.msi文件(可能下载速度会很慢) 2.安装时务必关闭Windows Defender及其他杀毒软件,并在安装完成后设置metasploit文件夹为白名单 wi ...
- HDU - 4405 Aeroplane chess(期望dp)
题意:沿着x轴从0走到大于等于N的某处,每一步的步数由骰子(1,2,3,4,5,6)决定,若恰好走到x轴上某飞行路线的起点,则不计入扔骰子数.问从0走到大于等于N的某处的期望的扔骰子次数. 分析: 1 ...