python基础 Day6
python Day6
id 可以获得python的内存地址
id的举例子
a=100
print(id(a))
#140712544153072 这里就是该对象的内存地址
is 判断的是比较内存地址是否相同
#zhuxiayu
ls=[1,2,3]
ls1=[1,2,3]
print(ls is ls1)
str="zhuxiayu"
str1="zhuxiayu"
print(str is str1)
#False
#True
- id相同,值一定相同
- 值相同,id不一定相同
代码块
我们所有的代码都要依赖代码块执行。
一个文件就是一个代码块
交互式命令下一行就是一个代码块
代码块的两个机制,同一个代码块下遵循同一个机制,不同的代码块下遵循的同一个机制。
在同一个代码块内的缓存机制(字符串的驻留机制)

目的:节省内存,提升性能。
机制适用的对象:int bool str
具体细则:所有的数字,bool值,几乎所有的字符串
优点:提升性能,节省内存。
不同代码块的缓存机制:小数据池

- 前提条件:不同代码块
- 适用对象: int bool str
- 具体细则:-5~256的数字,bool,满足规则的字符串
python基本数据类型之:集合(容器型数据类型,它要求它里面的元素是不可变的)
其本身是可变的数据类型。集合是无序的。
集合的作用
列表的去重
关系测试:交集,并集,差集,.....
空集合
Set1=set()
集合里面的元素必须是不可变的
集合的增
add
set1={1,4,"zhuxayu","ds"}
set1.add("weew")
print(set1)
#{1, 4, 'ds', 'zhuxayu', 'weew'}
update
#zhuxiayu
set1={1,4,"zhuxayu","ds"}
set1.update("weew")
print(set1)
#{1, 4, 'zhuxayu', 'e', 'w', 'ds'}
#其可迭代的
集合的删除-remove
- pop随机删除
集合的应用
遇到取交集并集什么的(关系测试)
#zhuxiayu
#交集
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1&set2)
#并集
print(set1|set2)
#差集
print(set1-set2)
列表的去重
#zhuxiayu
li=[1,2,34,567,8,1,1,2,1,2,2]
li1=set(li)
li=list(li1)
print(li)
深浅copy
浅copy(在拷贝的时候形成了两个地址)——全部切片属于浅copy
l1=[1,2,34,567,8,1,1,2,1,2,2]
l2=l1.copy()
l1.append(66)
print(l1)
print(l2)
#结果
[1, 2, 34, 567, 8, 1, 1, 2, 1, 2, 2, 66]
[1, 2, 34, 567, 8, 1, 1, 2, 1, 2, 2]
- 注意在列表拷贝的时候大列表的地址是不一样的,但是里面的小列表的地址是一样的

- 浅copy会在内存中新开辟一个空间,存放这个copy的列表,但是列表里面的内容还是沿用之前对象的内存地址l1,l2的id不同但是内容id相同
深copy
l1=[1,2,3,[1,2,2]]
l2=copy.deepcopy(l1)
这里的l1,l2是完全两个不同的地址了
- python对copy做了一个优化,对可变的数据类型在内存中重新创建一份,而不可变的数据类型沿用之前的。
浅copy:list,dict:嵌套的可变数据类型是同一个,深copy:list,dict嵌套的可变类型不是同一个
作业
作业1需求:
- 页面显示序号+商品名称+商品价格
- 用户如果输入选择的商品序号,然后打印商品名称及商品价格
- 如果用户输入的商品序号有误,则提示输入有误,并重新输入
- 用户输入Q,或者q,退出程序
server = [
{"name": "服务器1", "price": 10000},
{"name": "服务器2", "price": 10500},
{"name": "服务器3", "price": 10700},
{"name": "服务器4", "price": 10800},
]
while True: for index,dic in enumerate(server):
print(index,dic["name"],dic["price"])
number=input("请输入商品序号:").strip()
if number.isdecimal():
number=int(number)
if 0<number<len(server):
print(server[number-1]["name"],server[number-1]["price"])
else:
print("你输入的超出了范围")
elif number.upper()=="Q": break
else:
print("你输入的为非法字典")
作业2需求
dict={"name":"zhu","time":"fdsf",.}判断dict中“name"值是否在字典中
dict={"name":"zhu","time":"fdsf"}
print("name" in dict.keys())
作业3需求
循环提示用户,并将输入内容追加到列表中(如果输入N或n则停止循环)
list=[]
while 1:
username=input("请输入用户名:")
if username.upper()=="Q":break
else:
password=input("输入密码:")
dic={}
dic["name"]=username
dic["password"]=password
list.append(dic)
print(list)
作业4需求
读出下列程序结果
v1={"k1":"v1","k2":[1,2,3]}
v2={"k1":"v1","k2":[1,2,3]}
result=v1==v2
result1=v1 is v2
print(result,result1)
#结果True False
#因为不论是同代码的缓存机制还是小数据池缓存机制都只只用于bool int str三种数据类型
读出下列的程序结果
v1="dfsfsf"
v2=[1,2,4,v1]
v1="fsfdfsfsdfs"
print(v2)
#结果[1, 2, 4, 'dfsfsf']
- 原因解释是这里是字符串,不可以变得数据结构,然后在V1赋值的时候相当于开辟了一个新的数值地址,因为不可变还是V2还是指向了v1运来值的地址
读出下列的程序结果
list=[]
dict={}
for i in range(10):
dict["user"]=i
list.append(dict)
print(list)
#结果[{'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}, {'user': 9}]
list=[]
for i in range(10):
dict = {}
dict["user"]=i
list.append(dict)
print(list)
#结果[{'user': 0}, {'user': 1}, {'user': 2}, {'user': 3}, {'user': 4}, {'user': 5}, {'user': 6}, {'user': 7}, {'user': 8}, {'user': 9}]
- 解释,前面因为最后一步对字典进行了更改,后面因为每次添加的列表都是一个新的字典,所以数字不是重复的
python基础 Day6的更多相关文章
- Python基础Day6
一.代码块 一个模块(模块就是py文件),一个函数,一个类,一个文件都是一个代码块,一个整体是一个代码块. 交互模式的每一行都是一个代码块(交互模式:命令提示符),相当于每行都在不同的文件 二.id ...
- Python基础学习总结(持续更新)
https://www.cnblogs.com/jin-xin/articles/7459977.html 嗯,学完一天,白天上班,眼睛要瞎了= = DAY1 1,计算机基础. CPU:相当于人的大脑 ...
- Python基础 小白[7天]入门笔记
笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 进击的Python【第二章】:Python基础(二)
Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...
随机推荐
- 使用 Azure Blob Stoage 实现一个静态文件服务器
什么是Azure Blob Stoage Azure Blob Stoage 是微软Azure的对象存储服务.国内的云一般叫OSS,是一种用来存储非结构化数据的服务,比如音频,视频,图片,文本等等.用 ...
- IDEA中项目的两种打包方式
本文主要介绍在IDEA中怎么打包,及可以用哪种方式打包. 若是有指正或补充的,欢迎留言~ ٩(●̮̃•)۶ 接下来进入正题: IDEA中打包需要先进行配置,so,我们先打开<abbr titl ...
- 【laravel】基于jwt实现用户认证
安装及基础配置 使用 composer 安装 # 建议使用1.0以上版本 composer require tymon/jwt-auth .*@rc 进行一些配置 有些文档会说要添加 Tymon\JW ...
- 基于Centos7安装Docker-registry2.0
我们可能希望构建和存储包含不想公开的信息或数据的镜像,因为Docker公司的团队开源了docker-registry的代码,这样我们就可以基于此代码在内部运行自己的registry. 服务端1.拉去仓 ...
- Windows下使用图形化mount挂载磁盘到文件夹
Windows上也有类似于Linux上的mount命令,至于mount是什么: mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要 ...
- Python循环控制语句
Python循环控制语句:主要有三种,break.continue 和 pass 语句. break 语句 :在语句块执行过程中,终止循环.并跳出整个循环. continue 语句 :在语句执行 ...
- PHP fprintf() 函数
实例 把一些文本写入到名为 "test.txt" 的文本文件: <?php高佣联盟 www.cgewang.com$number = 9;$str = "Beiji ...
- luogu P3412 仓鼠找sugar II 期望 树形dp
LINK:仓鼠找sugar II 以前做过类似的期望题目 加上最后的树形dp不算太难 还是可以推出来的. 容易发现 当固定起点和终点的时候 可以先固定根 这样就不用分到底是正着走还是倒着走了. 1为根 ...
- 【原创】xenomai与VxWorks实时性对比(资源抢占上下文切换对比)
版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ (下面数据,仅供个人参考) 可能大部分人一直好奇Vx ...
- Python格式化字符串(f,F,format,%)
# 格式化字符串: 在字符串前加上 f 或者 F 使用 {变量名} 的形式来使用变量名的值 year = 2020 event = 'Referendum' value = f'Results of ...