今日学习

  集合

  内存相关知识

  深浅拷贝

内容回顾与补充

(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. Go Goosy Disk Docker Port Provisioners(GDP)

    小伙伴们,她们中出了一个叛徒,他是谁?是谁?是谁? 由一则口口相传的故事开始吧: 中午吃饭时间抽空小李跑到同座大楼的小张公司串门,小李是一名docker顾问熟称砖家,这间公司老板想挖小李,他盯了前台不 ...

  2. css选择器用法,使用css定位元素,css和xpath元素定位的区别

    css定位元素 1.什么是css? CSS(Cascading Style Sheets)层叠样式表,是一种语言,用来描述html或者xml的显示样式.在css语言中有css选择器,在selenium ...

  3. 缓存读写策略 - Cache Aside.md

    场景描述 比如一条数据同时存在数据库.缓存,现在你要更新此数据,你会怎么更新? 先更新数据库?还是先更新缓存? 其实这两种方式都有问题. (1)先更新数据库,后更新缓存 这样会造成数据不一致. A 先 ...

  4. PythonI/O进阶学习笔记_11.python的多进程

    content: 1. 为什么要多进程编程?和多线程有什么区别? 2. python 多进程编程 3. 进程间通信 =======================================   ...

  5. MyBatis3——输出参数ResultType、动语态sql

    输出参数ResultType 1.输出参数为简单类型(8个基本+String) 2.输出参数为对象类型 3.输出参数为实体对象类型的集合:虽然输出类型为集合,但是resultType依然写集合的元素类 ...

  6. 小白学Java:I/O流

    目录 小白学Java:I/O流 基本分类 发展史 文件字符流 输出的基本结构 流中的异常处理 异常处理新方式 读取的基本结构 运用输入与输出 文件字节流 缓冲流 字符缓冲流 装饰设计模式 转换流(适配 ...

  7. Django中model的class Meta

    Class Meta 作用:使用内部类来提供一些metadata,以下列举一些常用的meta:1,abstract:如下段代码所示,将abstract设置为True后,CommonInfo无法作为一个 ...

  8. canvas跨域完美解决,微信头像解决跨域

    现在前端技术发展的越来越快,很多图片合成这种耗费服务器性能的,都可以移动到前端进行了合成了.而且合成很方便,我们利用 canvas 可以实现好多东西. 自动打算利用前端来合成图片,在网上就找到了 ht ...

  9. GitHub Pages 与 Gitee Pages 上的 Jekyll

    GitHub 与 Gitee 提供的 Pages 服务中,均内嵌了 Jekyll 支持(Gitee 还提供了 Hugo 与 Hexo 支持).所谓「支持」,即指这些生成工具挂在云端:你只需要提供原始代 ...

  10. List容器排序方法的使用

    今天在做任务的时候需要对已经存到list容器里的对象数组进行排序,需要根据 其中的一个属性进行排序,最初是根据一个利用冒泡排序的算法进行处理的后来上网查了一下对于list容器进行排序时有自带的方法.所 ...