今日学习

  集合

  内存相关知识

  深浅拷贝

内容回顾与补充

(1)列表:

    (a)reverse 反转     

    v1=[1,2,3111,32,13]
    print(v1)
    v1.reverse()
    print(v1)
     #输出的结果为:[13,32,3111,2,1]
    (b)sort 排序    
    v1=[11,22,3111,32,13]
   v1.sort(reverse=False)# #从小到大(默认)
    print(v1) #输出结果为:[11, 13, 22, 32, 3111]
    v1.sort(reverse=True) #从大到小#
    print(v1) #输出的结果为:[3111, 32, 22, 13, 11]

(2)字典

  (a)keys/item/values/

  (b) get:与字典中通过键查询值功能类似,但当键不存在时会返回默认值None,当然默认值也可以被指定,具体示例如下:

info={'k1':'v1','k2':'v2'}
v0 = info["k1"]
v00 =info.get("k1")
#v1=info['k11111'] 该处会报错
v2=info.get('k1111')
#None就是Python中的空
v3=info.get('k1111',666)
print(v0)
print(v00)
print(v2)
print(v3)
# #None数据类型,改类型表示空(无任何功能,专门用于提供空值)

  (c)pop  

  info={'k1':'v1','k2':'v2'}
  result=info.pop('k2') #result返回值为v2
  print(info,result) #返回结果为{"k1":"v1"} v2
  #改写发等同于del info["k2"]

   (d)update 不存在,则添加;存在则更新  

  info={'k1':'v1','k2':'v2'}#不存在,则添加/存在,则更新
  info.update({'k3':'v3','k4':'v4','k2':666})
  print(info)
  #输出结果为:{'k1': 'v1', 'k2': 666, 'k3': 'v3', 'k4': 'v4'}

  (e)判断一个字符串中是否有敏感字符

  str

    v= "Python全栈21期"

    if "全栈" in v:

      print("包含敏感字符")

  list/tuple

    v=['alex','oldboy','藏老四','利奇航']
    if "利奇航" in v:
      print("包换敏感字符") 

  dict

    v={'k1':'v1','k2':'v2','k3':'v3'}
    #默认按照键判断,即:判断x是否是字典的键。
     if 'x' in v:
     pass
    #请判断:k1是否在其中
   if 'k1' in v:
       pass
  #请判断:v2是否在其中
  #方法一:循环法
    flag = "不存在"
    for i in v.values():
      if i =='v2':
        flag = "存在"
    print(flag)
  #方法二:
if 'v2' in  list(v.values()): #强制转换成列表['v1','v2','v3']
  pass  
#请判断k2:v2是否存在其中
value= v.get("k2")
if value = ="v2" :
  print("存在")
else:
  print("不存在")
练习题:
#让用户输入任意字符串,然后判断此字符串是否包含指定的敏感字符。
char_list=['利奇航','堂有光','炸展会']
content=input('请输入内容:')#我叫利奇航/我是堂有光/我要炸展会
success = True
if content in char_list :
success = False
if success:
print(content)
else:
print("含有敏感字符")

集合

  (1)集合set :特性:无序且不重复

    (2)集合的格式:v={1,2,3,4,5,6,99,100}

#疑问:v={} #这是一个空字典
"""
None #int类型
v1=123
v1=int() #-->0
print(v1)
#bool类型:bool类型只有两个值:True/Flase
v2 = bool() #--> 返回值为:Flase
#str
v3 =""
v3 = str()#-->
#list
v4=[]
v4 =list()
#tuple
v5 = ()
v5 = tuple()
#dict
v6 ={}
v6 = dict()
#set
v7 = set()
"""

  (3)集合的独有功能

    add/discard/update/intersetion(交集)/union(并集)/difference(差集)/symmetric_differdnce

  (4)公共功能

    len(长度)/for 循环

    v={1,2,'李邵奇'}
    print(len(v))
    #输出的结果为:3
    v={1,2,'李邵奇'}
    for item in v:
      print(item)
    #输出集合中的每一个元素
  (5)嵌套问题
#在python中,整型,bool布尔,字符串,元组属于不可变的数据类型
#列表,字典,集合属于可变的数据类型
#1.列表,字典,集合-->不能放在集合中+不能作为字典的key(unhashable)
# info={1,2,3,4,True,"国风",None,(1,2,3)}
# info1={True,2,3,4,1,"国风",None,(1,2,3)}
# print(info)
# print(info1)
#info输出的内容为:{1, 2, 3, 4, None, (1, 2, 3), '国风'}
#info1输出的内容为:{True, 2, 3, 4, None, (1, 2, 3), '国风'}
#注意:True 代表的是1,Flase 代表的是0,集合是去重的
#2.hash->哈希是怎么回事?
# #因为在内部会将值进行哈希算法并得到一个数值(对应内存地址),以后用于快速查找。
#3.特殊情况
# info={0,2,3,4,False,"国风",None,(1,2,3)}
# print(info)
#输出的结果为:{0, '国风', 2, 3, 4, None, (1, 2, 3)}
info={1:'alex',True:'oldboy'}
print(info)
#输出的结果为:{1: 'oldboy'}

内存地址

    注意:两个变量应该是两个不同的内存地址,但存在一些特殊的情况。

  特殊情况:

    1.整型:-5~256  属于小数据池,公用一个内存地址
    2.字符串:"alex",'asfasdasdfasdfd_asdf'属于小数据池,公用一个内存地址,但当遇到"f_*"*3:重新开辟内存。
    注意点:是赋值,还是重新赋值,或是内部修改(例如list.append()方法就属于内部修改)

  练习题

v=[1,2,3]
values=[11,22,v]
#练习1:
"""
v.append(9)
print(values)
#[11,22,[1,2,3,9]]
"""
#练习2:
"""
values[2].append(999)
print(v)
#[1,2,3,999]
"""
#练习3:
"""
v=999
print(values)
#[11,22,[1,2,3]]
"""
#练习4:
"""
values[2]=666
print(v)
#[1,2,3]
"""
#练习五
# v1=[1,2]
# v2=[2,3]
# v3=[11,22,v1,v2,v1]

  查看内存地址

# v1=[1,2,3]
# v2=v1
# v1.append(999)
# print(v1,v2)
# print(id(v1),id(v2)
# 输出结果为:[1, 2, 3, 999] [1, 2, 3, 999]
# 2938251599552 2938251599552 # v1=[1,2,3]
# v2=v1
# print(v1,v2)
# print(id(v1),id(v2))
# v1=999
# print(v1,v2)
# print(id(v1),id(v2))
# 输出结果为:[1, 2, 3] [1, 2, 3]
# 2278782156608 2278782156608
# 999 [1, 2, 3]
# 2278782223248 2278782156608

问题 :== 和 is有什么区别?

  == 用于比较值是否相等。
  is 用于比较内存地址是否相等。

总结

  列表:reverse/sort

  字典:find/pop/update

  集合:add/discard/update/intersection/union/difference/symmetric_difference

  特殊:嵌套:集合/字典中的key;空:None,空集合。。。。

  id

  type

  嵌套的应用:赋值,修改内部元素:列表/字典/集合

20200104--python学习第六天的更多相关文章

  1. python学习 第六天课后总结:

    <br class="Apple-interchange-newline"><div></div>       python学习 第六天课后总结 ...

  2. python学习第六天运算符总结大全

    python学习第六天运算符总结大全,玖乐网络(www.96net.com.cn)列出下面详细 1,算术运算符 + 加 - 减 *乘 / 除 % 求模 ** 乘方 // 取整除 - 返回商的整数部分 ...

  3. python学习第六天

    一. 模块介绍1. 模块的定义:用一堆代码实现了某个功能的代码集合     包的定义:本质就是一个目录(必须导游一个_init_.py文件),是用来从逻辑上组织模块的.2. 需要多个函数才能完成(函数 ...

  4. python学习第六天 条件判断和循环

    总归来讲,学过C语言的同学,对条件判断和循环并不陌生.这次随笔只是普及一下python的条件判断和循环对应的语法而已. 条件判断: 不多说,直接贴代码: age = 23 if age >= 6 ...

  5. python学习第六天:python基础(dict、set)

    dict dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度 创建&取值 为什么dict查找速度这么快? 因为 ...

  6. python学习第六天:python基础(条件判断、循环)

    条件判断 格式 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> ...

  7. 数据类型+内置方法 python学习第六天

    元组 用途:不可变的列表,能存多个值,但多个值只有取的需求而没有改的需求. 定义方式:在()内用逗号分隔开多个元素,可以存放任意类型的值. names=(‘alex’,’blex’,’clex’) 强 ...

  8. python学习第六天--匿名函数、过滤、映射

    匿名函数 lambda表达式 过滤器 filter(判断函数,可迭代对象) 会根据提供的函数对指定序列做过滤 映射 map(判断函数,可迭代对象) 会根据提供的函数对指定序列做映射

  9. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  10. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

随机推荐

  1. TensorFlow——训练模型的保存和载入的方法介绍

    我们在训练好模型的时候,通常是要将模型进行保存的,以便于下次能够直接的将训练好的模型进行载入. 1.保存模型 首先需要建立一个saver,然后在session中通过saver的save即可将模型保存起 ...

  2. 【PCIE-2】---PCIE配置空间及访问方式简介

    对新手来说,第一步了解PCIE的相关基本概念,第二步了解PCIE配置空间,第三步深入研究PCIE设备枚举方式.本章主要总结第二步的PCIE配置空间 按照国际惯例,先提问题: 1. 什么是PCIE的配置 ...

  3. Java动态编译技术原理

    这里介绍Java动态编译技术原理! 编译,一般来说就是将源代码转换成机器码的过程,比如在C语言中中,将C语言源代码编译成a.out,,但是在Java中的理解可能有点不同,编译指的是将java 源代码转 ...

  4. 如何编写Robot Framework测试用例2---(测试用例语法1)

    基本语法 测试用例由关键字组成,关键字的来源有三种: 1从测试库引入:2从资源文件引入:3从关键字表中引入(自定义关键字) 下面就是一个典型的测试用例组织形式. 图中有2个测试用例“Valid Log ...

  5. ChoiceFiled MultipleChoiceField ModelChoiceField ModelMultipleChoiceField

    1.ChoiceFiled 单选 字段 2.MultipleChoiceField 多选 3.ModelChoiceField 单选 query_set 4.ModelMultipleChoiceFi ...

  6. NABCD项目分析

    Share软件 N(需求):我们设计的这款手机app名为share,旨在打造一款服务于大学生的软件,像qq,微信,微博等,这些社交软件大都服务范围太广,我们就是为了满足当代大学生为了本校学生交流方便, ...

  7. 通过Excel表创建sql脚本

    Excel.sql脚本 1)准备好存有数据的excel表格: 这里我们有些小技巧可以让表下面和右边的表格隐藏,在第8行的位置按住“Ctrl+Shift+↓”可以选定下面的空格,然后鼠标右键 隐藏即可, ...

  8. java中常用的锁机制

    基础知识 基础知识之一:锁的类型 锁就那么几个,只是根据特性,分为不同的类型 锁的概念 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限 ...

  9. Servlet梳理

    Servlet 梳理 概述 Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础. 要介绍 Servlet 必须要先把 Servlet 容器 ...

  10. Selenium(七):截图显示等待

    一.显示等待(有条件等待) 常见问题: 定位明明是对的,为什么运行代码没找到定位. 定位明明是对的,找到定位了,文本信息为什么取到是空的? 分析原因: 没有处理frame 页面渲染速度比自动化测试的代 ...