20200104--python学习第六天

Posted limin1027

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20200104--python学习第六天相关的知识,希望对你有一定的参考价值。

今日学习

  集合

  内存相关知识

  深浅拷贝

内容回顾与补充

(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学习第六天的主要内容,如果未能解决你的问题,请参考以下文章

学习Java的第六天

第六天

java学习第六天

PHP学习第六天

学习python的第六天

pyhon学习第六天 代码块,小数据池(缓存机制,驻留机制),is == id =,字符编码