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的更多相关文章

  1. Python基础Day6

    一.代码块 一个模块(模块就是py文件),一个函数,一个类,一个文件都是一个代码块,一个整体是一个代码块. 交互模式的每一行都是一个代码块(交互模式:命令提示符),相当于每行都在不同的文件 二.id ...

  2. Python基础学习总结(持续更新)

    https://www.cnblogs.com/jin-xin/articles/7459977.html 嗯,学完一天,白天上班,眼睛要瞎了= = DAY1 1,计算机基础. CPU:相当于人的大脑 ...

  3. Python基础 小白[7天]入门笔记

    笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...

  4. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  5. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  6. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  7. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  8. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  9. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

随机推荐

  1. chrome浏览器hover时文字抖动bug

    今天发现一个奇怪的bug,chrome浏览器里面  当父标签定位为fixed时,hover里面子标签时,文本会发生抖动,百思不得其解,经过多方查证,发现解决办法 -webkit-transform:  ...

  2. netty 使用字典提升短文本的压缩效果

    1 问题 术语:压缩率,compression ratio,压缩后的大小/压缩前的大小,越小说明压缩效果越好. 在使用netty的JdkZlibEncoder进行压缩时,发现了一个问题:它对于短文本( ...

  3. Object#wait()与Object#wait(long)的区别

    例子 例1 最基础的等待-通知 下面一个例子,一个线程"waiting"在同步代码块调用了Object#wait()方法,另一个线程"timedWaiting" ...

  4. android studio 部分问题及解决方案

    1 启动多个虚拟机后开启指定端口的虚拟机     https://blog.csdn.net/chuyouyinghe/article/details/72958004       adb devic ...

  5. PHP usleep() 函数

    实例 延迟执行当前脚本 5 秒(5000000 微秒):高佣联盟 www.cgewang.com <?php echo date('h:i:s') . "<br>" ...

  6. 如果你大学上过编程课,一定被老师提醒过:不要使用 goto 语句!

    如果你上过编程课,一定被老师提醒过:不要使用goto语句! 因为goto语句不仅让代码的可读性很差,随意的跳出还会给程序带来安全隐患. 但是这种几乎被现代编程明令禁止的语句,在计算机诞生之初却司空见惯 ...

  7. 6.10 省选模拟赛 小C的利是 高斯消元 矩阵行列式

    LINK:小C的利是 想起来把这道题的题解写了 .一个常识:利是在广东那边叫做红包. 关于行列式的题目 不过我不太会23333..口胡还是可以的. 容易想到10分的状压.不过没什么意思. 仔细观察要求 ...

  8. ABC E - Active Infants 贪心 dp

    LINK:Active Infants 一个快省选的人 还在写ABC(莫名觉得丢人 不过也无所谓了. 首先考虑 随便一个排列 我们考虑一下其是不是最优的 容易发现如果最大值没有在边界上的话我们直接把它 ...

  9. duoxiao OJ #910 【高手训练】【动态规划】梦中漫步 期望 LCA

    LINK:梦中漫步 当然也可以去一本通的Oj/loj上交(loj可能没有.. 期望好题.期望和dp往往是在一起的. 前置知识:1. 期望是线性可加的.2.和的期望等于期望的和. 从u出发每次随机选一条 ...

  10. 软件tf版本是什么意思?

    对于iOS用户来说,有时候会听到tf版本软件,软件tf版本究竟是什么意思呢?它与正常在App Store中下载的软件有什么不同呢? 对于大多数iOS用户来说,一般都是从App Store中下载应用,凡 ...