1.id is详解

ID
  在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址:
    name = 'nba'
    print(id(name)) # 1585831283968
IS
  is 又是什么那? == 是什么意思是那?

  

  is(身份运算)指的两边的内存地址是否相等,也就是是否是同一个地址 ==指的两边的数值是否相等

  所以:如果内存地址相等,那数值一定相等,如果数值相等,内存地址不一定相等

2.代码块

在python中一切都是对象
Python的程序是由代码块构造成的。块是python程序的一个文本,他是一个能执行的一个单元
python中的代码块:一个函数,一个模块,一个类,一个文件都是代码块,而在交互式方式输入的每条语句都是一个代码块。 那代码块和小数据池有什么关系那? 代码块的缓存机制:
 
 在python执行同一个代码块下的初始化对象命令时(可以理解为c#中的初始化字符串),会检查该值是否存在(默认在一个字典那种去检查),如果该变量和值存在默认要检查的字典中,就重新使用该值
  如果不存在,就在字典中创建该变量与值相对的映射,存入到字典当中,方便以后继续调用。
  所以同一个代码块中i1=1000,i2=1000,指向的时同一个1000,即:要使用同一代码块的缓存机制,所以i1和i2指向的内存地址相同,数值也相同 代码块缓存机机制的适用范围:
  int(float):任何数字在同一代码块都复用
  bool:True和False在内存中都以1或0表示,复用
  str:几乎所有的字符串都符合
    1.非乘法得到的字符都满足代码块的缓存机制
    2.乘法得到的为两种:
      1.乘数为1的任何字符串都满足代码块的缓存机制
      2.乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,满足代码块的缓存机制
  trple():空元组
  None:
代码块缓存机制的优点:
  1.节省内存空间
  2.提升python性能 ============================================================================================================================
小数据池
  
也称作小整数缓存机制,或称为驻留机制等等
  小数据池是针对不同代码块之间的缓存机制
小数据池缓存机制:
  
小数据池缓存机制使用的不同的代码块中,在内存中开辟两个内存地址:
    一个空间:-5-256
    一个空间:一定规则的字符串(相乘不超过20,且乘数的是1)
小数据池适用范围

  int(整数):python自动将-5-256之间的整数进行缓存(放在一个池中,可能是字典,或其他容器),当你把整数赋值给变量时,并不会直接创建对象,而是在内存中使用已经创建好的缓存对象
  bool:就是True,False,无论你创建多少个变量指向True,False,那么他在内存中只存在一个1或0
  str:
    1.字符串的长度为0或者1,默认都采用了驻留机制(小数据池)
    2.字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留

    3,用乘法得到的字符串,分两种情况。
      1.乘数为1时,仅含大小写字母,数字,下划线,默认驻留,含其他字符,长度<=1,默认驻留,含其他字符,长度>1,默认驻留。
      2.乘数>=2时,仅含大小写字母,数字,下划线,总长度<=20,默认驻留。
小数据池的优点:
  1.节省内存空间
  2.提升python性能
重点: 
如果在同一代码块下,则采用同一代码块下的换缓存机制。
如果是不同代码块,则采用小数据池的驻留机制。 验证1:

 验证2:

 

 3.基础数据类型之间的转换

1.int bool str三者之间可以进行转换
2.bool可以与所有的数据类型进行转换,所有为空的数据类型转换成bool都是false
3.字符串<--->列表
  str--->list li=str.spilt()
  list--->str str='.'.join(list) #其中list里面的元素必须都是字符串类型 4.字符串<--->元组
  str--->tuple tu =str1.partition('b') #b是字符串中一个字符
  tuple--->str str='.'.join(tu) 5.列表<-->元组
  list<--->tuple
    tuple(list)或者list(tuple)
6.字典<--->列表
  dict--->list list(dict) #列表中的元素是字典里面的键值 other:
  1.如果元组中只有单个元素,并期没有','逗号的时候,那么打印出来的类型为元素本身
   tu = (123)
   print(tu,type(tu))
  
  2.字典的formkeys()方法:用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。 dict.formkeys(seq,[,value]),键值必须为可迭代类型
    坑: 如果你的值是一个可变的数据类型, 他在内存中是一个id相同的内存地址。
    dic = dict.fromkeys('abcd',[])
    dic['a'].append(666)
    dic['b'].append(111)
    dic['c'].append(222)
    print(dic)

4.set集合操作

set:是字典的阉割版,没有值的键rar文件set的作用:
  1.列表去重
  2.关系测试 set是无序列,但是在数字1-21之间的数字,在集合中从小到大的排序

5.拓展

拓展一

# 将此列表索引为奇数位对应的元素全部删除.
l1 = [11, 22, 33, 44, 55] #方法一:通过del函数的切片加步长的方式删除
  del li[1::2]
  print(li) #方法二:错误案例
  for item in range(len(li)):
    item % 2 ==1:
      ll.pop(item)
  print(li) ---> [11,33,44]
  此方法从思路上来讲是正确的,range(len(li))根据"顾头不顾腚"原则能生成从0-5(0,1,2,3,4)五个元素,然后判断为奇数的,然后根据pop(索引)的方法来删除奇数索引。
  但其实里面的一个坑在于:如果我们从前向后删除第一个为奇数索引之后,这个索引就消失了了,还剩下0 2 3 4四个索引,但是根据列表的特性,中间不能出现断裂的索引,也就是说,索引必须是连续的。
  所以索引2 3 4 会向前补充,所以就会漏掉一部分索引,从而导致删除的结果不对。 #正确的删除方式:
    1.在for循环里面不要对列表的大小进行改变(删除,增加元素等操作),可能会影响到后续最终结果
      li1=[]
      for item in range(len(li)):
        if item % 2 ==0:
          li1.append(li[item])
      li=li1
      print(li)
    2.根据题意来说,从后向前删除列表,不会产生以上问题
      for item in range(len(li)-1,-1,-1):
        if item % 2 ==1:
          li.pop(item)
      print(li)

 拓展二

#将字典中的key中含有k元素的所有键值对删除.
dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'name': 'alex'} #错误案例
  for key in dic:
    if 'k' in key:
      dic.pop(key)
  print(dic)
  报错信息: dictionary changed size during iteration #正确案例
  l1 = []
  for key in dic:
    if 'k' in key:
      l1.append(key)
  for key in l1:
    dic.pop(key)
  print(dic)   将符合条件的可以添加到其他对象那个之中,在进行修改

在for循环里面不要对字典的大小进行改变(删除,增加元素等操作),可能会影响到后续最终结果

返回系列

python基础之 数据类型的补充,小数据类型的更多相关文章

  1. python基础1--安装、package、数据类型

    1.下载python 下载地址https://www.python.org/downloads/ 2.Package以及数据类型 自带package和外部package 自带package举例: os ...

  2. Python基础入门-实现猜数字小游戏

    今天呢,我们来通过前面学过的一些知识点来完成一个猜数字大小的游戏程序设计.那么呢,一般人写代码直接上来就干,没有分析,这样的做法是没有产出的,除非你是大牛,今天呢,我会把我学习编程的思路分享给大家,我 ...

  3. Python基础编程:字符编码、数据类型、列表

    目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...

  4. Python基础(1)——变量和数据类型[xiaoshun]

    目录 一.变量 1.概述 Variables are used to store information to be referenced(引用)and manipulated(操作) in a co ...

  5. python基础学习之路No.2 数据类型

    python中常见的数据类型有:整数.浮点数.字符串.列表.元组.字典 python相较其他语言,可以省略了声明,可以直接定义赋值使用. 例如: a=12 就相当于 其他语言中的  int a=12  ...

  6. python基础一(运算符/变量定义/数据类型)

    一.运算符 1.算数运算符 (1)加(+) 注意:字符串与整数之间不能进行相加,需要通过str()或int()进行转换数据类型 整数与整数相加 >>> 1 + 1 2 >> ...

  7. Python基础(变量、字符编码、数据类型)

    变量 变量名由字母.数字(不能为首字符).下划线组成,不能使用关键字 以下关键字不能声明为变量名 ['and', 'as', 'assert', 'break', 'class', 'continue ...

  8. Python基础、条件语句和基本数据类型

    1. 第一句python - 后缀名是可以是任意? - 导入模块时,如果不是.py文件 ==> 以后文件后缀名是 .py 2. 两种执行方式 python解释器 py文件路径 python 进入 ...

  9. python 基础篇 06 编码 以及小知识点补充

    本节主要内容: 1. is和==的区别2. 编码的问题 ⼀. is和==的区别1. id()通过id()我们可以查看到⼀个变量表⽰的值在内存中的地址 注  ----<<<在pytho ...

  10. python 基础 set 集合类型补充

    为啥今天又重提这个数据类型呢?平时用的少,等要用起来的时候才发现,自己对这块啥都不知道了,so,今天就把这块再梳理一下咯. 一.set集合,是一个无序且不重复的元素集合.这一点是非常重要的. 二.集合 ...

随机推荐

  1. Linux常用指令笔记

    目标:统计当前目录下java文件的个数 指令:`ls -R ./ | grep .java$ | wc -l` 原理:`ls -R ./`列出当前文件夹下的所有FILE,包括目录以及文件;`grep ...

  2. Hadoop:hdfs文件permission denied问题解析

    Cron jobs can be scheduled, but fail to write parquet file and seems due to user permission of “yarn ...

  3. linux下反编译android apk

    1.所需要的工具 1)apktool,功能:反编译出apk所需要的资源文件和布局设置文件等, 下载地址:https://code.google.com/p/android-apktool/downlo ...

  4. .NET Core Session的使用方法

    刚使用.NET Core会不习惯,比如如何使用Session:不仅需要引用相应的类库,还需要在Startup.cs里进行注册. 1.在你的项目上基于NuGet添加: install-package M ...

  5. spring 测试类test测试方法

    实例掩码地址为:孔浩组织结构设计 web.xml配置文件: <!-- Spring 的监听器可以通过这个上下文参数来获取beans.xml的位置 --> <context-param ...

  6. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库01 —— 准备环境,搭建本地仓库,安装ambari

    一.集群软硬件环境准备: 操作系统:  centos 7 x86_64.1804 Ambari版本:2.7.0 HDP版本:3.0.0 HAWQ版本:2.3.05台PC作为工作站: ep-bd01 e ...

  7. Linux date 命令

    date命令用于打印或设置系统日期和时间,常见用法如下: [root@localhost ~]# date //查看当前时间 [root@localhost ~]# date +"%Y-%m ...

  8. Non-zero exit code (1)

    刚报了这个错Non-zero exit code (1) 经排查执行这个命令就好了  python -m pip install --upgrade pip 一定要多看报错,报错中有提示的

  9. redis数据操作笔记

    redis是key-value的数据结构,每条数据都是一个键值对键的类型是字符串 注意:键不能重复,值的类型分为五种:字符串string 哈希hash 列表list 集合set 有序集合zset 一. ...

  10. python文档自动翻译

    关键方法 提取文档内容 读取TXT文档 txt文档的读取很简单,直接用python自带的open()方法就好,代码如下所示: # 读取TXT文档 def read_txt(path): '''实现TX ...