day06

小数据池

小数据池——缓存机制(驻留机制),只是一种规格,不会实际的开辟一个空间

  • == 判断两边内容是否相等 *****
# a = 10
# b = 10
# print(a == b)
  • is 基于内存地址进行判断 *****
# a = 10
# b = 10
# print(a is b) is判断基于内存地址进行判断
# print(id(a))
# print(id(b))

小数据池支持的对象也是:数字,字符串,布尔值

  • 小数据池的数字范围:-5——256*****
  • 字符串:在同一代码块下,只要内容相同就采用相同的内存地址

乘法的时候总长度不能超过20*****

乘法的时候中文,特殊符号乘以0

  • 布尔值:在同一代码块下,只要内容相同就采用相同的内存地址

小数据池的验证方法,必须脱离代码块才能进行验证

先执行代码块的规则,当代码块的规则不符合的时候再执行小数据池的规则(驻留机制)

# a = -2.5 * 2
# b = -2.5 * 2
# print(id(a))
# print(id(b))
# print(a is b) # True # a = "alex你好" *2
# b = "alex你好" *2
# print(id(a))
# print(id(b))
# print(a is b) # True
代码块

一个文件,一个函数,一个类,一个模块,终端中每一行是一个代码块

支持的数据类型:数字,字符串,布尔值

  • 数字:在同一个代码块下,只要内容相同就采用相同的内存地址(比-5小的就不是)

数字在做乘法的时候范围: -5——256,不能使用浮点数 *****

  • 字符串:在同一代码块下,只要内容相同就采用相同的内存地址

乘法的时候总长度不能超过20 *****

乘法的时候中文,特殊符号乘以1或0

  • 布尔值:在同一代码块下,只要内容相同就采用相同的内存地址

深浅拷贝

面试必问:赋值,浅拷贝,深拷贝

赋值:

# lst = [1,2,3,[5,6,7]]
# lst1 = lst
# print(lst1)
# print(lst) # lst[-1].append(8)
# print(lst1)
# print(lst)
浅拷贝

拷贝:复制

浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素

浅拷贝的时候只拷贝第一层元素

规则:

修改原列表里面的整体元素只有原列表改变,如果修改原列表里面的整体元素里面的元素,则两个都改变

修改新列表里面的整体元素只有新列表改变,如果修改新列表里面的整体元素里面的元素,则两个都改变

如果只是修改原列表或者新列表的整体元素,则改变的那个列表改变,另外一个不改变

# lst1 = lst.copy()  # 新开辟一个空间给lst1
#
# print(lst[-1])
# print(lst1[-1])
#
# print(id(lst1[-1]))
# print(id(lst[-1])) # 浅拷贝的时候,只会开辟一个新的容器列表,其他元素使用的都是源列表中的元素 # lst = [1,2,3,[5,6,7]]
# lst1 = lst.copy()
# lst1[-1].append(8)
# print(lst)
# print(lst1) # lst = [1,2,3,[5,6,7]]
# lst1 = lst.copy()
# lst[3] = 567
# print(lst1)
# print(lst) # lst = [1,2,3,4,[5,6,7,[8,9]]]
# lst1 = lst.copy() # [1,2,3,4,[5,6,7,[8,9]],10]
# lst1.append(10)
# print(lst)
# print(lst1) # lst = [1,2,3,4,[5,6,7,[8,9]]]
# lst1 = lst.copy()
# lst1[-1][-1] = "56"
# print(lst) # [1,2,3,4,[5,6,7,[8,9]]]
# print(lst1) # ["56",2,3,4,[5,6,7,[8,9]]] # lst = [[1,2,],90,6,7,[5,6]]
# lst1 = lst.copy()
# lst1[-1] = 8
# print(lst)
# print(lst1) # dic = {"alex":[1,2,3,[5,6]]}
# dic1 = dic.copy()
# dic["alex"][0] = "56"
# print(dic)
# print(dic1)
深拷贝

需要导入:import copy

深拷贝开辟一个容器空间(列表),不可变数据类型公用,可变数据类型(再次开辟一个新的空间),空间里的值是不可变的值进行共用的,可变的数据类型再次开辟空间

# import copy  #导入
# lst = [1,2,3,[5,6,7]]
# lst1 = copy.deepcopy(lst) # 深拷贝
# lst[-1].append(8)
# print(lst)
# print(lst1) # lst = [1,2,3,[5,6,7,[8,10,9]]]
# import copy
# lst1 = copy.deepcopy(lst)
# print(id(lst[-1][-1]))
# print(id(lst1[-1][-1]))

集合

集合 ——set 无序的——不支持索引

没有值的字典,天然去重

类似字典的键,可变类型不能放:列表、字典、集合不能放

# 定义集合
# s = {1,"alex",False,(1,2,3),12,1,12,4,6,32,2,4}
# print(s)
  • add() :只能添加一个
  • update() :迭代添加
# s = {1,2,3,4}
# s.add("67") #只能添加一个
# print(s)
# s.update("今天") # 迭代添加
# print(s)
  • pop() :随机删除,有返回值
  • remove(值) :指定删除
  • clear() :清空 ——set() 空集合
# s = {1,2,3,4}
# print(s.pop()) # pop有返回值
# print(s)
# s.remove(3) # 指定元素删除
# print(s)
# s.clear() # 清空 -- set() 空集合
# print(s)

先删除再添加

for循环

# for i in {1,2,3}:
# print(i)

打印的时候是无序的,循环的是有序的

其他操作

交集:&

并集: |

差集: -

反交集:^

父集(超集): >

子集 : <099

frozenset() : 冻结集合

# s1 = {1,2,3,4,5,6,7}
# s2 = {5,6,7,1}
# print(s1 & s2) # 交集
# print(s1 | s2) # 并集
# print(s1 - s2) # 差集
# print(s1 ^ s2) # 反交集
# print(s1 > s2) # 父集(超集)
# print(s1 < s2) # 子集 # print(frozenset(s1)) # 冻结集合 更不常用
# dic = {frozenset(s1):1}
# print(dic)

面试题:

# 面试题:
# lst = [1,2,1,2,4,2,45,3,2,45,2345,]
# print(list(set(lst)))

day06——小数据池、深浅拷贝、集合的更多相关文章

  1. python 小数据池 深浅拷贝 集合

    1.小数据池: 1.1代码块: 一个文件,一个函数,一个类,一个模块,终端中每一行 1.1.1 数字: -5 ~ 256 1.1.2 字符串: 乘法时总长度不能超过20 1.1.3 布尔值: 内容相同 ...

  2. day06 小数据池和编码

    一. 上次课内容回顾字典:由{}括起来. 每个元素用逗号隔开, key:value的形式存储数据key: 不可变的. 可哈希的.增删改查:1. 增加: 直接用新key来赋值. dict[key] = ...

  3. python笔记2小数据池,深浅copy,文件操作及函数初级

    小数据池就是在内存中已经开辟了一些特定的数据,经一些变量名直接指向这个内存,多个变量间公用一个内存的数据. int: -5 ~ 256 范围之内 str: 满足一定得规则的字符串. 小数据池: 1,节 ...

  4. day06 小数据池,再谈编码

    今日所学 一.  小数据池 二.  is 和==的区别 三.  编码的问题 一.小数据池的作用 用来缓存数据 可以作用的数据类型: 整数(int), 字符串(str), 布尔值(bool). 什么是块 ...

  5. python27期day06:小数据池、深浅拷贝、集合、作业题。

    0.pycharm是代码块.黑窗口是小数据池.如下图: 1.驻留机制(长得像的共用一个内存地址)分小数据池缓存机制:后期开发时能明确知道.为什么不能正常使用.把经常用的东西放入规则(黑窗口)里. 数字 ...

  6. 6.Python初窥门径(小数据池,集合,深浅拷贝)

    Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...

  7. python基础知识四 小数据池,深浅拷贝,集合+菜中菜

    四.小数据池,深浅拷贝,集合+菜中菜 1小数据池 --缓存机制(驻留机制) ​ '==' 判断两边内容是否相等 ​ 'is' 基于内存地址进行判断是否相同 a = 10 b = 10 print(a ...

  8. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  9. python的小数据池和深浅拷贝

    小数据池 一种数据缓存机制,也称驻留机制 在同一代码块,相同的值不会开辟新的内存 特殊字符除外 小数据池只针对:在控制台时! 数字 :-5到256间的整数会被缓存 布尔值:都会缓存8 字符串 小于等于 ...

随机推荐

  1. Java向服务器上传图片

    在比较绚丽多彩的网站或者业务逻辑比较丰富的程序设计过程中,图片的相关操作时必不少的,尤其时图片的上传.还没有彻底摆脱纸质办公可能需要将纸质的文件备份上传,网站的建设可能需要上传用户头像.图片描述等等, ...

  2. ios浏览器调试踩坑(1)----mescroll.js和vue-scroller

    主要记录在ios浏览器出现触摸无限加载的情况 使用vue-scroller和mescroll.js/mescroll.vue先踩ios浏览器默认滑动会影响mescroll的方法调用. 首先给公共js加 ...

  3. 剑指offer 9-10:青蛙跳台阶与Fibonacii数列

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 问题分析 我们将跳法个数y与台阶数n视为一个函数关系,即y=f(n). ...

  4. Django 练习班级管理系统四 -- 编辑班级

    修改 classes.html {% extends "layout.html" %} {% block css %} {% endblock %} {% block conten ...

  5. requests---HTTPS请求

    做过接口测试的都会发现,现在的接口都是HTTPS协议了,今天就写一篇如何通过request发送https请求,如果不是很了解HTTP协议的同学可以看下我的另外一篇博客什么是HTTP 什么是HTTPS ...

  6. JAVA基础复习day-01

    1.基础语法 1.1.基础语法规则 1.1.1.Java代码实现 代码示例: public class Hello{ public static void main(String[] args){ S ...

  7. tensorflow模型量化实例

    1,概述 模型量化应该是现在最容易实现的模型压缩技术,而且也基本上是在移动端部署的模型的毕竟之路.模型量化基本可以分为两种:post training quantizated和quantization ...

  8. Logback文件这么配置,TPS提高至少10倍

    来源:https://tinyurl.com/y5zbtgsq 阅读本文,你将了解到 日志输出到文件并根据LEVEL级别将日志分类保存到不同文件 通过异步输出日志减少磁盘IO提高性能 异步输出日志的原 ...

  9. c# 第12节 分支语句if、switch、三位运算符

    本节内容: 1:流程控制语句分类 2:分支语句之if的使用 3:分支语句之switch的使用 4:分支语句之三位运算符 5:分支语句比较 1:流程控5:制语句分类 2:分支语句之if 3:分支语句之s ...

  10. 201871010106-丁宣元 《面向对象程序设计(java)》第十四周学习总结

    201871010106-丁宣元 <面向对象程序设计(java)>第十四周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://home.cnblogs.com/u/nw ...