首页 > 编程语言 >Python基础3

Python基础3

时间:2024-12-28 15:30:22浏览次数:7  
标签:Python 基础 列表 v1 v2 拷贝 copy id

1.内存相关

    1. == 和 is有什么区别
    • == 用于比较值是否相等
    • is 用于比较内存地址是否相等
  • 2.小数据池/小整数缓存机制/驻留机制
    • 为了优化速度和内存使用设计,在一定范围内对整数进行复用,通常是[-5, 256]
    • 由数字、字母、下划线组成的字符串简单字符串本身或*1时,符合小数据池
    • 由非数字、字母、下划线组成,并且乘以大于1的数,重新开辟内存来存储字符串
    v1 = "alex"
    v2 = "alex"
    v3 = "alex_*"*5
    v4 = "alex_*"*5
    v5 = "zhangsan_666"*1
    v6 = "zhangsan_666"*1
    v7 = "lisi*"
    v8 = "lisi*"
    print(id(v1), id(v2)) # 4457566816 4457566816
    print(id(v3), id(v4)) # 4457659600 4457659680
    print(id(v5), id(v6)) # 4457623024 4457623024
    print(id(v7), id(v8)) # 4457569264 4457568832
    
  • 3.哈希
    • 列表、字典、集合是可变类型,不能放在集合中且不能作为字典的key(unhashable)
    • Python内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找
      • 存储100万个数的列表,在查找时花费时间较多
      • 对于集合、字典等不可变类型,每一个值(如字典的key)经过hash运算得到一个内存地址,后续直接通过它找到数据,速度比列表快得多
  • 4.不同数据类型嵌套存储示例
    • 1.修改简单列表的元素
    v1 = [1, 2, 3]
    v1[0] = 999
    

  • 2.列表内部嵌套列表
v1 =[1, 2, [9, 8], "alex"]


  • 3.列表名作为列表元素
v1 = [1, 2]
v2 =[1, 2, v1]
v1[0] = "奇"

v1 = [1, 2]
v2 =[1, 2, v1]
v2[2] = 123

  • 4.列表中嵌套字典
data_list = []
for i in range(4):
    data = {}
    data['user'] = i
    data_list.append(data)

  • 5.深拷贝与浅拷贝
    • 1.普通列表
    v1 = [1, 2, 3]
    v2 = copy.copy(v1) # 只拷贝了v1指向的三个内存空间的地址,存储的内容依然是v1指向的1 2 3
    v3 = copy.deepcopy(v1) # 找到内部所有可变部分(列表的空壳子)拷贝一份,由于小数据池,所以和浅拷贝得到的结果一致
    

  • 2.嵌套列表
v1 = [1, 2, [33, 99]]
v2 = copy.copy(v1) # 把最外层的3元素列表空壳拷贝一份
v3 = copy.deepcopy(v1) # 把第1层和第2层的可变类型(列表)都拷贝一份,由于小数据池,数据没有重新拷贝


  • 3.总结
    • 浅拷贝只拷贝第1层(变量的指向)
    • 深拷贝拷贝嵌套层次中的所有可变类型

标签:Python,基础,列表,v1,v2,拷贝,copy,id
From: https://www.cnblogs.com/zjl-linux/p/18637305

相关文章

  • Omnissa Horizon Clients 2412 发布 - 虚拟桌面基础架构 (VDI) 和应用软件
    OmnissaHorizonClients2412发布-虚拟桌面基础架构(VDI)和应用软件OmnissaHorizon,之前称为VMwareHorizon,通过高效、安全的虚拟桌面交付增强您的工作空间请访问原文链接:https://sysin.org/blog/omnissa-horizon-8/查看最新版。原创作品,转载请保留出处。作者主页:sys......
  • python语言ddts爬虫程序代码QZQ
    #https://search.dangdang.com/?key=%C5%C0%B3%E6&act=inputimportrequestsimportosfromlxmlimportetreeimportosimportcsvimportcertifios.environ[‘REQUESTS_CA_BUNDLE’]=certifi.where()url=‘https://search.dangdang.com/?key=%C5%C0%B3%E6&a......
  • python语言wph爬虫程序代码QZQ1
    #https://list.vip.com/102747162.htmlimportrequestsimportreimportosimportjsonimportcsvimportcertifios.environ[‘REQUESTS_CA_BUNDLE’]=certifi.where()url=‘https://mapi-pc.vip.com/vips-mobile/rest/shopping/pc/product/module/list/v2’he=......
  • 基于Python控制台的中文文本情感分析程序
    以下是一个简单的基于Python控制台的中文文本情感分析程序,使用了snownlp库来进行情感分析。程序功能包括用户输入中文文本并分析其情感倾向(积极或消极)。程序功能简介用户可以输入中文文本。程序使用snownlp库对文本进行情感分析。输出情感得分及其对应的情感分类(如:积极/消极......
  • 基于 Python +线性回归算法 的 股票价格预测
    以下是一个基于Python控制台的股票价格预测程序,适合作为课程设计作业。程序基于机器学习模型(如线性回归),实现对股票价格的预测,并支持用户通过控制台输入或加载历史数据进行操作。功能描述数据加载:用户可输入股票历史价格数据,或从文件中加载CSV数据。数据可视化:显示......
  • Python-DdddOcr的简单使用
    前言:我们在做WEB端UI自动化时,会遇到图片验证码校验的登录方式。我在之前的文章也做过介绍:https://www.cnblogs.com/TSmagic/p/16082799.html(Pillow+pytesseract+tesseract-ocr破解简单的图形验证码)https://www.cnblogs.com/TSmagic/p/16117861.html(Pyt......
  • C++日志管理从基础到完善
    万古教员有名言,自信人生二百年。个人主页:oioihoii喜欢内容的话欢迎关注、点赞、收藏!感谢支持,祝大家祉猷并茂,顺遂无虞!版本一:基础日志代码在设计C++日志系统时,我们需要考虑以下几个关键点:易用性:日志系统应该易于使用,开发者应该能够轻松地添加日志条目。性能:日志系统应......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结
    2024-2025-120241417《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标<《C语言程序设计......
  • 《计算机基础与程序设计》第十四周学习总结
    学期(2024-2025-1)学号(20241412)《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>2024-2025-1-计算机基础与程序设计这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业)教材学习内容总结复习......
  • 遗传算法——附python实现与各方法的作用与修改
    前言遗传算法是数学建模中非常重要的一种搜索和优化算法,掌握遗传算法的精髓除了在竞赛中具有优势以外,更主要的是在解决实际问题的时候提供了一种全新的思路,通过将现实中的某种模式转换成算法,并用以解决某种问题的这种思路,或许是算法创新,提高效率的另一条路。本文将会介绍......