python笔记06
python笔记06 数据类型
上个笔记内容补充
- 补充
- 列表
reverse,反转。
v1 = [1,2,3111,32,13]
print(v1)
v1.reverse()
print(v1)
v1=v1[::-1]sort
v1 = [11,22,3111,32,13]
print(v1)# v1.sort(reverse=False) # 从小到大(默认)
# v1.sort(reverse=True) # 从大到小
# print(v1)
- 字典
keys/values/items
info = {'k1':'v1','k2':'v2'}
for x1,x2 in info.items():
print(x1,x2)
for item in info.items():
print(item)
for k in info.values():
print(k)
for x in info.keys():
print(x)
输出:
k1 v1
k2 v2
('k1', 'v1')
('k2', 'v2')
v1
v2
k1
k2get
info = {'k1':'v1','k2':'v2'}# v1 = info['k1']#k1无值,会报错.
# v2 = info.get('k1') # 如果k1无值,返回None给v2.
# v3 = info.get('k1',666)#如果k1无值,返回666给v3.
# print(v2)
# None数据类型,改类型表示空(无任何功能,专门用于提供空值)
pop
info = {'k1':'v1','k2':'v2'}
result = info.pop('k2')
print(info,result)
del info['k1']
print(info)
输出的结果:
{'k1': 'v1'} v2
{}update
info = {'k1':'v1','k2':'v2'}
# 不存在,则添加/存在,则更新
info.update({'k3':'v3','k4':'v4','k2':666})
print(info)
----------
info = {'k1':'v1','k2':'v2'}
info.update({'k3':666})
print(info)
输出的结果:
{'k1': 'v1', 'k2': 'v2', 'k3': 666}
- 判断一个字符串中是否有敏感字符?
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. 敏感字
- 列表
内容详细
- 集合 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
- discard
- update
- intersection
- union
- difference
- symmetric_difference
v = {1,2,3,4,5,6,99,100}
v.clear()#表示清空
#增加
v.add('zhangsan')
print(v)
#删除
v.discard(100)
print(v)
#批量增加
v.update({101,102,105})
print(v)
v1=v.intersection([101,102])
print(v1)
#交集
v2=v.intersection({102,103,105,106})
print(v2)
#并集
v3=v.union({1000,1001,1002,1005})
print(v3)
#差集
v4=v.difference({1,2,3})
print(v4)
#对称差集,v5属于两者并集,且不属于两者交集。
v5=v.symmetric_difference({1,'lisi',5})
print(v5)
输出:
{1, 2, 3, 4, 5, 6, 99, 100, 'zhangsan'}
{1, 2, 3, 4, 5, 6, 99, 'zhangsan'}
{1, 2, 3, 4, 5, 6, 99, 101, 'zhangsan', 105, 102}
{101, 102}
{105, 102}
{1, 2, 3, 4, 5, 6, 99, 101, 'zhangsan', 105, 102, 1000, 1001, 1002, 1005}
{99, 4, 101, 5, 6, 'zhangsan', 105, 102}
{2, 3, 4, 99, 6, 101, 'zhangsan', 105, 102, 'lisi'}
公共功能
- len
v = {1,2,'李邵奇'}
print(len(v)) - for循环
v = {1,2,'李邵奇'}
for item in v:
print(item) - 集合没有的特性:索引、步长、切片、删除、修改
- len
嵌套问题
# 1. 列表/字典/集合 -> 不能放在集合中+不能作为字典的key(unhashable)
集合中的元素是通过has计算,放在has表中。
# info = {1, 2, 3, 4, True, "国风", None, (1, 2, 3)}
# print(info),输出中没有true,true和1重合。
# 2. hash -> 哈希是怎么回事?
# 因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。# 3. 特殊情况
# info = {0, 2, 3, 4, False, "国风", None, (1, 2, 3)}
# print(info) ,False和None重合。 # info = {
# 1:'alex',
# True:'oldboy'
# }
# print(info),
#{1: 'oldboy'}
#(1,和true在has计算后重合)
内存相关
示例一
v1 = [11,22,33]
v2 = [11,22,33]v1 = 666
v2 = 666 v1 = "asdf"
v2 = "asdf" # 按理 v1 和 v2 应该是不同的内存地址。特殊:
py缓存机制:
py小数据值:-5-256,值重复赋值,地址相同
字符串:常见字符串,重复赋值,地址相同
1. 整型: -5 ~ 256
2. 字符串:"alex",'asfasd asdf asdf d_asdf ' ----"f_*" * 3 - 重新开辟内存。
示例二:
v1 = [11,22,33,44]
v1 = [11,22,33]
print(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)#v1重新赋值,v2还是指向v1 = [11,22,33]。 # 练习3:(重新赋值)
v1 = 'alex'
v2 = v1
v1 = 'oldboy'
print(v2) #alex
示例四
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]
这里v3中的v1,v2,v1表示的上面两个列表的地址。v1,v2重新复制,v3不会变化。查看内存地址
"""
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 用于比较内存地址是否相等。
python笔记06的更多相关文章
- Python笔记 #06# NumPy Basis & Subsetting NumPy Arrays
原始的 Python list 虽然很好用,但是不具备能够“整体”进行数学运算的性质,并且速度也不够快(按照视频上的说法),而 Numpy.array 恰好可以弥补这些缺陷. 初步应用就是“整体数学运 ...
- 我的python笔记06
面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做< ...
- python笔记 - day5
python笔记 - day5 参考: http://www.cnblogs.com/wupeiqi/articles/5484747.html http://www.cnblogs.com/alex ...
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...
- python笔记41-虚拟环境virtualenv
前言 如果你是一个python初学者,我是不建议你搞python虚拟环境的,我看到很多python的初学者同学,使用最新版的pycharm,新建一个工程时候默认就是venu虚拟环境. 然后在使用cmd ...
- Python函数06/装饰器
Python函数06/装饰器 目录 Python函数06/装饰器 内容大纲 1.装饰器 1.1 开放封闭原则 1.2 装饰器 2.今日练习 内容大纲 1.装饰器 1.装饰器 1.1 开放封闭原则 扩展 ...
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- 20.Python笔记之SqlAlchemy使用
Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...
随机推荐
- 怎么用IDEA快速查看类图关系
做Java开发的,现在普遍都用上idea了.可以说,idea是当之无愧的Java开发神器.如果,你现在还没用idea,那肯定是你还没有感受过它的强大. 好了,话不多说,今天的主题主要是教大家怎么通过i ...
- Sublime text3的安装以及python开发环境的搭建
作者:struct_mooc 博客地址:https://www.cnblogs.com/structmooc/p/12376601.html 一. Sublime text3的安装 1.sublime ...
- centos7安装Elasticsearch及Es-head插件详细教程(图文)
懒惰了很久,今天来写一下Elasticsearch在centos7上安装教程以及安装过程中可能出现的报错解决方式,有不对的地方,烦请各位看官多多指教! 一.ES安装 1.环境检查 确保有java环境, ...
- Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片
场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
- 使用BeanUtils.populate将map集合封装为bean对象
1.前言 最近在做一个javaweb项目练练手,涉及到把jsp页面中表单的内容存到数据库,和request.getParameterMap配合使用可以将jsp页面表单的数据转化为bean对象. 2.介 ...
- sqlserver 批量修改数据库表主键名称为PK_表名
1.我们在创建sqlserver得数据表的主键的时候,有时会出现,后面加一串随机字符串的情况,如图所示: 2.如果你有强迫症的话,可以使用以下sql脚本进行修改,将主键的名称修改为PK_表名. --将 ...
- 解决visual studio 2013编译过程中存在的无法打开kernel.lib问题
1. 出现此类问题的原因 由于原visual studio文件中的安装中出现问题,所以原有的SDK(soft development kits)文件出现缺失: 2. 解决方法1 重新下载SDK工具,安 ...
- P2094运输
-------------------- 链接:Miku ------------------- 这是一道水贪心,很容易想到做法就是把最贵的两个放在一块,让后当成一个重新放回队列 ---------- ...
- 整理了Linux常用命令变量
查看信息命令 ls 查看当前目录下面的所有文件 -a 显示所有文件(包括隐藏文件) -l 显示所有文件(包括文件的详细信息) 格式: ls 参数 目录路径(绝对/相对) cd 切换目录 格式: cd ...
- SpringBoot整合NoSql--(二)MongoDB
简介: MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是 ...