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 ... 
随机推荐
- vue学习(十八)使用自定义指令 为字体渲染颜色
			<div id="app"> //v-color 是自定义的 <input type="text" class="form-cont ... 
- HTTP Keep-Alive的作用
			作用: Keep-Alive:使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接.Web服务器,基本上都支持HTTP Keep-Alive ... 
- 前端需要知道的 HTML5 SEO优化
			title标签,字数不能过长(不超过70个字符最优) <title>淘宝网 - 淘!我喜欢</title> 使用description以及keyword标签(不超过300个字符 ... 
- break statement not within loop or switch报错
			break statement not within loop or switch. 注意你的循环,可能多加了个分号.for语句后面? 
- PHP simplexml_load_file() 函数
			实例 转换 XML 文件为 SimpleXMLElement 对象,然后输出对象的键和元素: <?php高佣联盟 www.cgewang.com$xml=simplexml_load_file( ... 
- luogu P4852 yyf hates choukapai 单调队列优化dp
			LINK:yyf hates choukapai 由于赶时间 要做的题有点小多.. 所以简略概述一下. 容易想到一个暴力dp \(f_{i,j,k}\)表示到了第i张牌此时连抽j次已经单抽k次的最大值 ... 
- AT5200 [AGC038C] LCMs 莫比乌斯反演
			LINK:LCMs 随便找了道题练习了一下莫比乌斯反演 式子有两个地方化简错误 导致查了1h的错. 讲一下大致思路 容易发现直接做事\(n^2logn\)的. 观察得到数字集合大小为1e6. 可以设\ ... 
- CentOS 7.0防火墙设置
			CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙.1.关闭firewall:systemctl stop firewalld.servicesystemctl ... 
- Jdbc Template初步了解
			JdbcTemplate简介 Java语言提供了jdbc来访问数据库,在jdbc api中需要手动的获取和释放连接等资源,使用起来需要做许多重复的工作.Spring在jdbc api的基础上做了抽象和 ... 
- Android Studio--家庭记账本(四)
			今天,实现了在数据库中的删除功能,但是无法实现对表单的删除与自动更新.需要重新启动虚拟机重新从数据库中读取数据才可以实现表单的更新.List表单中的remove功能不太会用. 
