python06day
Now代码1005行
回顾
字典的初识
- 查询速度快,{'name':'tangdaren'},存储大量关联型数据
- 键:int、str(bool tuple不常用)不可变的数据类型
- 值:任意数据类型
- 3.5x前无序,3.6x按照初始时的顺序排列,3.7x有序
字典的增删改查
- 增:setdefault()设置默认值,有则不变、无则增加
- 删:pop()按照键删(可设置返回值)clear del
- 改:dic['name']='henri'
- 查:get
- 特殊:keys() value() items()
字典的嵌套。
#面试题,字符串处理成字典
msg='k:1|k1:2|k2:3|k3:4'
#分割
msg=msg.strip()
msg=msg.split('|')
print(msg) #['k:1', 'k1:2', 'k2:3', 'k3:4']
#对每个元素操作,for循环
dic={}
for i in msg:
#每次循环以冒号分离
key,value=i.split(':')
dic[key.strip()]=int(value)
print(dic) #{'k': 1, 'k1': 2, 'k2': 3, 'k3': 4}
今日内容
is == id用法
id:相当于身份证号,唯一,获取内存地址id()
#id身份证号,内存地址
s='asdawq'
print(id(s)) #2667094447640 #==
l1=[1,2,3]
l2=[1,2,3]
print(l1==l2) ##==比较的是两边值是否相等 s1='henri'
s2='henri '
print(s1==s2) #False #is
l1=[1,2,3]
l2=[1,2,3]
print(id(l1)) #1315641372232
print(id(l2)) #1315641372424
print(l1 is l2) #False #is判断的是内存地址是否相同
- id相同,值一定同,反之,不一定
代码块
所有代码都需要依赖代码块执行
块是一个python程序的文本,是作为一个单元执行的
一个模块、一个函数、一个类、一个文件都是一个代码块
交互式命令下一行就是一个代码块。
两个机制:同一个代码块下,有一个机制。不同的代码块下,遵循另一个机制。
同一代码块下的缓存机制
- 前提条件:同一代码块内
- 机制内容:pass
- 适用的对象:int bool str
- 具体细则:所有的数字,bool,几乎所有的str
- 优点:提升性能、节省内存
不同代码块下的缓存机制(小数据池)
- 前提条件:不同代码块里
- 机制内容:pass
- 适用的对象:int bool str
- 具体细则:-5~256的数字、满足一定规则的字符串
- 优点:提升性能、节省内存
总结
- 面试题考
- 回答的时候要分清楚:同一个代码块下适用一个缓存机制,不同代码块下适用另一个机制
- 小数据池:数字范围-5~256
python基础数据类型之:集合set(了解)。容器型数据类型
- 它要求里面的元素是不可变的数据类型。int str bool tuple
- 但是它本身是可变的。
- 集合是无序的
- {}其中放元素是集合,放键值对是字典
- 集合的作用
- 列表的去重
- 关系测试:交集、并集、差集……
- 集合的创建
##集合的创建
#set1=set({1,3,'henri',False})
#法2
set1={1,3,'henri',4,5,1,'F',False}
print(set1) #无序的
#空集合的表示
set()
print(set(),type(set())) #set() <class 'set'>
3. 集合有效性测试
# 集合的增删
set1={'henri','tangdaren','F',1,2,3,4,5,23}
# 增
# add
set1.add('xx')
# update迭代着增 # 删
# remove按元素删 # 不能改,只能先删再增,变相改值
交并差
##交并差
set1={1,2,3,4,5,6,7}
set2={3,4,5,6,7,8}
#交集
print(set1 & set2) #{3, 4, 5, 6, 7}
#并集
print(set1 | set2) #{1, 2, 3, 4, 5, 6, 7, 8}
#差集
print(set1 - set2) #{1, 2}
#反交集,找出不共有的元素
print(set1^set2) #{1, 2, 8} #子集<
print(set1<set2) #False
#超集>
print(set1>set2)
列表去重,把list先转换成集合,再转回list
深浅copy(面试会考)
赋值运算
#赋值运算
l1=[1,2,3,[22,33]]
l2=l1
l1.append(666)
print(l1) #[1, 2, 3, [22, 33], 666]
print(l2) #[1, 2, 3, [22, 33], 666]
浅copy
#浅copy
l1=[1,2,3,[22,33]]
l2=l1.copy()
l1.append(666)
print(l1) #[1, 2, 3, [22, 33], 666]
print(l2) #[1, 2, 3, [22, 33]] #另一种情况,说明浅copy外壳不同,但里面元素是共用的
l1=[1,2,3,[22,33]]
l2=l1.copy()
l1[-1].append(666) #大列表中嵌套的小列表里追加元素
print(l1) #[1, 2, 3, [22, 33, 666]]
print(l2) #[1, 2, 3, [22, 33, 666]]
深copy
#深copy
import copy
l1=[1,2,3,[22,33]]
l2=copy.deepcopy(l1)
l1[-1].append(666)
print(l1) #[1, 2, 3, [22, 33, 666]]
print(l2) #[1, 2, 3, [22, 33]]
python对深copy做了优化,不可变的数据类型共用,可变的自己用自己的
#这是浅copy
l1=[1,2,3,[22,33]]
l2=l1[:]
l1[-1].append(666)
print(l1) #[1, 2, 3, [22, 33, 666]]
print(l2) #[1, 2, 3, [22, 33, 666]]
- 浅copy:list、dict:嵌套的可变的数据类型是同一个
- 深copy:list、dict:嵌套的可变的数据类型不是同一个
总结
- id is ==三个方法
- 回答的时候要分清楚:同一个代码块下适用一个缓存机制,不同代码块下适用另一个机制
- 小数据池:数字范围-5~256
- 优点:提升性能、节省内存
- 集合:列表去重,关系测试。
- 深浅copy:理解浅copy
练习
#看代码写结果
v={}
for index in range(10):
v['users']=index
print(v)
'''
{'user':9}
'''
#
goods=[
{'name':'电脑','price':1999},
{'name':'鼠标','price':10},
{'name':'游艇','price':20},
{'name':'手机','price':998},
]
#1.按‘序号 名称 价格’显示
#想显示每个商品,for
for i in range(len(goods)):
print(i+1,goods[i]['name'],goods[i]['price'])
#2.用户输入选择的商品序号,然后打印商品名称以及商品价格
#用户输入,input
#3.如果用户输入序号有误,提示输入有误,并重新输入
#4.用户输入Q或者q,退出程序。
#upper或lower
flag=False
while flag==False:
count=input('请输入你选择的商品序号(按q或Q退出):')
if count.upper()=='Q':
break
elif count=='1' or count=='2' or count=='3' or count=='4':
print(goods[int(count) - 1]['name'], goods[int(count) - 1]['price'])
flag = True
else:
print('输入序号有误,请重新输入。')
明天内容
1.基础数据内容补充
2.编码进阶
代码总数1005+175=1180行
python06day的更多相关文章
随机推荐
- 【LeetCode】1022. Smallest Integer Divisible by K 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】777. Swap Adjacent in LR String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 智商题 相似题目 参考资料 日期 题目地址:http ...
- 【LeetCode】419. Battleships in a Board 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】844. Backspace String Compare 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字符串切片 栈 日期 题目地址:https://le ...
- TCP/IP协议竟然有这么多漏洞
网络攻击是指利用网络存在的漏洞和安全缺陷对网络系统的软硬件及其系统数据进行攻击的行为.TCP/IP协议作为网络的基础协议,从设计之初并没有考虑到网络将会面临如此多的威胁,导致出现了许多攻击方法.由于网 ...
- 【Java笔记】Java分包问题
这个图讲的很清晰,转自-http://www.bubuko.com/infodetail-2219664.html
- Java实习生常规技术面试题每日十题Java基础(六)
目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...
- MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表
MySQL创建数据库 easyShopping,包括area表.goods表.customer表.orders表.ordersdetall表.test表 商品表表结构: 字段名 说 明 类 型 长 度 ...
- 编写Java程序,实现客户端向服务端上传文件的功能
查看本章节 查看作业目录 需求说明: 实现客户端向服务端上传文件的功能 当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径.当客户在客户端输入完成后,服务端实现文件上传 实现思 ...
- 每天学一点——python变量、常量与数字类型
python变量.常量与数字类型 常量 (一句话能概括先讲它) 严格来讲,python中除了π与N就没有不变的量 所以,在python中我们识别常量是看它是否全大写(如下图) 变量 变量,顾名思义,就 ...