今日学习

  集合

  内存相关知识

  深浅拷贝

内容回顾与补充

(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. sql if else 语句

    IF ELSE 语句IF ELSE 是最基本的编程语句结构之一几乎每一种编程语言都支持这种结构而它在用于对从数据库返回的数据进行检查是非常有用的TRANSACT-SQL 使用IF ELSE的例子如下语 ...

  2. 如何通过Java8的方式去统计程序执行时间?

    代码如下所示 import java.time.Duration; import java.time.Instant; import java.util.concurrent.TimeUnit; pu ...

  3. 让现有vue前端项目快速支持多语言 - 用.net core程序快速替换中文为资源Key,咱不干体力活

    前言 最近应公司上层要求,需要将现有项目尽快支持多语言,而中文内容可以找专业人员翻译.那么咱们说干就干,首先我们项目的前端是用vue写的spa程序且组件方面用的element ui,那么自然而然想到用 ...

  4. python 安装虚拟环境virtualenv

    1.sudo apt install virtualenv 安装失败 2.sudo apt-get update 更新失败 提示: E: 仓库 “http://mirrors.aliyun.com/u ...

  5. NOI2019滚粗记

    Day -15 期末考完了,爆炸爆炸,就连数学和物理都错了好多傻*错误QwQ 哎呀管他的,NOI我来了! 跑到广附集训来了23333 Day -14 -- -2 做题,听题,哇和一群队爷在一个教室,真 ...

  6. 第二次团队作业-需求分析(By七个小矮人)

    第二次团队作业-需求分析 一.格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作 ...

  7. Dynamics 365 CRM Connected Field Service 不能接收IoT Alert

    今天浪费了2,3个小时再connected field service(CFS)上面. 状况如下 1. 在CFS中添加了新的customer assets,并且点击了注册按钮. 2. 注册步骤一直在i ...

  8. Python脚本通过ftp协议移植文件

    需求 项目需要定时移植多个客户服务器的文件到公司服务器上,确保文件定时同步和生成监控日志 机制原理 1.客户和公司服务器同时安装vpn,绕过复杂的网关,linux下使用的OpenVPN 2.服务器定时 ...

  9. ubuntu18.04编译jdk8

    准备编译环境 sudo apt-get install -y zip unzip build-essential libx11-dev libxext-dev libxrender-dev libxt ...

  10. linux运维基础知识-系统分区及LVM逻辑卷的创建

    系统分区及LVM逻辑卷的创建 分区 创建逻辑卷 LVM简介:逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图 ...