2019-07-04 列表、字典、集合、元组常用操作及内置方法

今天接着昨天列表知识点

一、列表

  1.count()  统计该元素在此列表中有几个   

l = [1,4,5,6,4,6,7]
print(l.count(6))     #2

  2.clear()   清空列表   []

l = [1,4,5,6,4,6,7]print(l.clear())   #None    表示没有返回任何值
print(l)       #[]

  3.reverse()     将列表反转(就是顺序调换输出) 

l = [1,4,5,6,4,6,7]
l.reverse()
print(l)           #[7, 6, 4, 6, 5, 4, 1]

  4.sort () 排序  默认情况下是从小到大(升序)

l = [1,4,5,6,4,6,7]
l.sort()
print(l)     #[1, 4, 4, 5, 6, 6, 7]

  sort和reverse结合就可以变成从大到小排序  

l = [1,4,5,6,4,6,7]
l.sort(reverse=True)
print(l)    #[7, 6, 6, 5, 4, 4, 1]

  总结:

    1.能存多个值

    2.有序

    3.可变类型

  用已学的知识点做队列(先进先出)和堆栈(先进后出)

l1 = []
# 先进
l1.append('first')
 l1.append('second')
l1.append('third')
 # 先出
print(l1.pop(0))
print(l1.pop(0))
print(l1.pop(0))
# 先进
 l1.append('first')
 l1.append('second')
 l1.append('third')
# 后出
 print(l1.pop())
 print(l1.pop())
 print(l1.pop())

二、元组

  作用:能够存储多个元素,之间用逗号隔开,元素可以是任意类型,元组不能被修改

  定义:与列表相比,只不过是[]换成()

  age = (11,22,33)    #age = tuple((11,22,33))

  在定义元组的时候,哪怕只有一个元素的时候,也要用逗号隔开,区分一下  

t1 = (1,2,3)
print(type(t1))    #<class 'tuple'>
t2 = (1)
print(type(t2))    #<class 'int'>

  t  = tuple(1)   #报错,必须传容器类型就是可以for循环的

  需要掌握的操作:

    1.按索引取值

      t = (1,2,'a','b',[1,2,3])

      print(t[0])     # 1

    虽然说元组不能改,但是如果要修改里面的可变类型,你要先定位到修改数据的位置

t = (1,2,'a','b',[1,2,3])
t[-1][0] = '我改了'
print(t)      #(1, 2, 'a', 'b', ['我改了', 2, 3])

    2.切片(顾头不顾尾,步长)

      print([::2])   #步长为2获取所有元素

    3.长度   len

      print(len(t))

    4.成员运算   in 和not in

      print ('a' in t)

    5.循环

      for i in t:

        print(i)

  总结:

    1.能存多个值

    2.有序

    3.不可变类型

三、字典  dict

  作用:能存储多组key:value键值对,key是对value的描述   key通常都是字符串,这个key只能是不可变类型,value可以是任意类型数据

  定义: d ={'name':'jason','age':18}   #d = dict({'name':'jason','age':18})

  注意:字典的key是不能重复的,要唯一标识一条数据,如果你重复了,后面的就会覆盖前面的

  需要掌握的:

    1.按key存取值:可存可取 

d = {'name':'jason','age':18}

#
print(d['name'])   #jason
print(d['user'])    #如果字典中没有这个key,就会报错

#修改
d['name'] = 'oldboy'
print(d)   #{'name': 'oldboy', 'age': 18}   如果是设置原字典中已经存在的key,就是修改

#添加
d['pwd'] = '123'
print(d)     #{'name': 'oldboy', 'age': 18, 'pwd': '123'}  如果原字典中没有这个key,就是添加

    2.长度len()

      字典是统计键值对的个数

    3.成员运算 in 和 not in    (对于字典来说只能判断key值)   

d = {'name':'jason','age':18}
print('name' in d)  #True
print('pwd' in d)    #False

    4.删除 pop(根据key来删除,返回的值是value。当删除字典中没有的key时,直接报错)

d = {'name':'jason','age':18,'pwd':123}
print(d.pop('name'))  #jason
print(d)    #{'age': 18, 'pwd': 123}

print(d.pop('user'))    #直接报错

    定义字典的三种方法:      

      1.掌握:   d1 = {'name':'oldboy','pwd':123}

      2.掌握:   d2  = dict(name = 'jason' , password = 123 , age = 18)  注意这里的key设置的时候不用写' '

      3.了解即可

d ={}
l = [
    ['name','jason'],
    ['age',18],
    ['hobby','read']
]

for k,v in l:
    d[k] = v
print(d)    #{'name': 'jason', 'age': 18, 'hobby': 'read'}

#还有一种方法
d3 = dict(l)
print(d3)     #{'name': 'jason', 'age': 18, 'hobby': 'read'}

    5.键keys(),值values(),键值对items()

      keys是取出所有key放在一个列表中,values是取出所有value放在一个列表中,items是把每个键值对放在一个元组中,然后所有键值对组成一个列表。

d = {'name':'jason','age':18,'pwd':123}
print(d.keys())    #dict_keys(['name', 'age', 'pwd'])
print(d.values())    #dict_values(['jason', 18, 123])
print(d.items())    #dict_items([('name', 'jason'), ('age', 18), ('pwd', 123)])

    6.get()根据key获取value   (这种方法相对于d['name'] 直接取值的方法更好,因为这个在取不存在的key时,不会报错)   

    注意:不能写d.get('name') = xxx 这种赋值方式,赋值方式只能写d['name'] = xxx    

d = {'name':'jason','age':18,'pwd':123}
print(d.get('name'))    #jason
print(d.get('age'))     #18
print(d.get('user'))    #None
print(d.get('aa','不存在的'))   #不存在的  
    第二个参数如果不写的话,当key不存在的话就返回None,写了就返回你写好的第二个参数信息

    需要掌握的:

    7.快速创建一个字典    fromkeys()

d = {'name':'jason','age':18,'pwd':123}
print(d.fromkeys(d,123))   #{'name': 123, 'age': 123, 'pwd': 123}
print(d.fromkeys('sad',123))    #{'s': 123, 'a': 123, 'd': 123}

    8.popitem() 删除   尾部以元组格式弹出

d = {'name':'jason','age':18,'pwd':123}
print(d.popitem())    #('pwd', 123)
print(d)    #{'name': 'jason', 'age': 18}

    9.setdefault()

d1 = {'name':'jason','pwd':123}
res1 = d1.setdefault('name','xxoo')  # 当键存在的情况下 不修改值 并且将原先key对应值返回给你
print(d1,res1)    #jason
res2 = d1.setdefault('age',18)  # 当键不存在的情况下 新增一个键值对 并且将新增的键值对的值返回给你
print(d1,res2)     #18

    10.update()  如果updata字典里面没有的key,就会新加一个键值对。如果update原来存在的key,那么只会修改value

d1 = {'name':'jason','pwd':123}
d2 = {"age":18}
d1.update(d2)
print(d1)      #{'name': 'jason', 'pwd': 123, 'age': 18}

d1.update(age=666)
print(d1)    #{'name': 'jason', 'pwd': 123, 'age': 666}

    11.循环     字典循环结果是显示出key

    d1  ={'name':'jason','age':18}

    for i in d1:

      print(i)

  总结:

    1.存在多个值

    2.无序

    3.可变的

四、集合    

    作用:去重、关系运算

    定义:可以包含多个元素,用逗号分开    s  = {1,2,3,4,5}      #  s = set()

    注意在定义空集合的时候只能用关键字 set() ,   空{}指的是字典

    集合的元素遵循三个原则:

      1.每个元素都必须是不可变元素

      2.没有重复的元素

      3.无序

    优先掌握的操作:

      1.长度len()

      2.成员运算  in 和 not in

      3.   | 合集    (两个集合合并)    两个班级的所有人

pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}

print(pythons | linux) #{'frank', 'tank', 'alex', 'jason', 'kevin', 'jerry', 'egon', 'owen', 'nick'}

      4.   & 交集   (两个集合的共同点) 两个班级都报名了   

pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}

print(pythons & linux)    #{'egon', 'alex', 'tank'}

      5.  - 差集     只报了一个班的学生    

pythons = {'jason', 'nick', 'tank', 'egon', 'kevin', 'owen', 'alex'}
linux = {'frank', 'jerry', 'tank', 'egon', 'alex'}

#只报名pythons班级的学生
print(pythons - linux)    #{'jason', 'kevin', 'nick', 'owen'}

#只报名linux班级的学生
print(linux - pythons)    #{'frank', 'jerry'}

      6. == 判断是否相等   

s1 = {1,2,3}
s2 = {1,3,2}
print(s1==s2)    #True    因为集合是无序的

      7.     父集: >,>=     子集:<,<=    (判断是否包含)返回结果是True或者False

s1 = {1,2,3}
s2 = {1,3,2,4,5}
print(s1<s2)     #True

 

数据类型总结

  int

  float

  str

  list

  dict

  set

       tuple

  bool

 

  可变类型:list / dcit /set

  不可变类型: int /float /str /tuple

  按访问顺序区分:

    直接访问:数字

    顺序访问:字符串,列表,元组

    key值访问:字典

  

 

posted @ 2019-07-04 17:00  只会玩辅助  阅读(250)  评论(0编辑  收藏  举报