五、列表、元组、字典、集合详解

一、列表类型list

1、用途:记录多个值(同种属性)可变类型

2、类型转换
  list(*)
  其中括号内可以是所有可以用for循环的数据类型,如字符串、列表、字典、元组等

3、常用操作及其内置方法
  l=['a','b','c','d','e']
  1、按索引存取值(正向存取+反向存取):即可存也可以取
    print(l[0])
    print(id(l[0]))
    l[0]='A'
    print(id(l[0]))
    两个id的值一样,所以列表是可变类型
  2、切片(顾头不顾尾,步长)
    print(l[1:4])
    结果:['b','c','d']
  3、长度
len(l)
  4、成员运算 in 、not in
  5、追加值
    append(3333) 追加在列表后边
    assert(0,1111)

  6、删除del、remove、pop
    del l[0]
    remove('b')
    res=l.pop(0) #返回删除的那个值

  7、循环
    for item in l:
    print(item)
4、****(需要掌握的操作)
  l.count('a')
  item=['1','2','3','4']
  l.extend(item)
  1.index('a')
  l.reverse()         直接将列表反转
  l.sort()           排序,默认从小到大
  l.sort(reverse=True)    从大到小排序

  l=[1,2,3,4,5,6]

  #正向步长
  l[0:3:1]     #[1, 2, 3]
  #反向步长
  l[2::-1]     #[3, 2, 1]
  #列表翻转
  l[::-1]      #[6, 5, 4, 3, 2, 1]


二、元组类型tuple


1、用途:元组就是一个不可变的列表
2、定义方式:在()内用逗号分隔开多个任意类型的元素
强调:
  l=['a']
  print(type(l),l[0])

  t=('a')
  print(type(t))
  print(t)

类型转换
  t1=tuple('hello')
  t2=tuple([1,2,3])
  print(t1)
  print(t2)
3、常用操作及其内置方法
*****(优先掌握的操作):
t=(1,2.2,'aa',('b','c'),['a','b','c'])
  1、按索引取值(正向取+反向取):只能取
    print(t[0])
    print(t[-1])
  2、切片(顾头不顾尾,步长)
    t=('a','b','c','e','f')
    print(t[1:4])
  3、长度
    print(len(t))
  4、成员运算in和not in
    print('a' in t)
  5、循环
    for item in t:
      print(item)
****(需要掌握的操作)
  t=('a','b','c','e','a','f')
  print(t.index('a',1,5))
  print(t.count('a'))

  t=('a',111,['b','c'])
  print(id(t[0]),id(t[1]),id(t[2]))
  t[2][0]='B'
  # print(t)
  print(id(t[0]),id(t[1]),id(t[2]))


三、字典dict


1、用途:记录多个值,列表是索引对应值,而字典是key对应值,其中key对value有描述性的功能

2、定义方式:在{}用逗号分隔开多个元素,每个元素都是key:value的形式,其中key可以不可变类型,通常是字符串类型
而value可以是任意类型
  d={1:'aaa',2.2:'bbb','xxx':'ccc',(1,2,3):'dddd'}         #d=dict(...)
  print(d[(1,2,3)])

类型转换
d=dict(x=1,y=2,z=3)
print(d)

items=[('name','egon'),('age',18),('gender','male')]
d={}
for item in items:
d[item[0]]=item[1]

d=dict(items)
print(d)

***:
  keys=['name','age','gender','height','weight']
  d={}
  for key in keys:
  d[key]=None

  d={}.fromkeys(keys,None)
  print(d,type(d))

3、常用操作+内置的方法
*****(优先掌握的操作):
  1、按key存取值:可存可取
    dic={'name':'egon','age':18}
    dic['xxxx']                      #用中括号取值,没有该key会报错
    print(dic.get('name'))    #用get方法取值,如果该key不存在则返回None
    print(dic.get('xxx'))

    print(dic['name'])
    dic['name']='EGON'
    dic['gender']='male'
    print(dic)

    l=['a','b','c']
    l[0]='A'
    l[4]='AAA'

  2、长度len
    dic={'name':'egon','age':18}
    print(dic)
    print(len(dic))

  3、成员运算in和not in :是以字典的key为准的
    dic={'name':'egon','age':18}
    print('name' in dic)
    print('egon' in dic)


  4、删除del()、pop()、popitem()
    dic={'name':'egon','age':18}
    del dic['name']
    print(dic)

    res=dic.pop('name')        #pop会返回被删除的值
    print(dic)
    print(res)

    res=dic.popitem()           #删除最后一个键值对
    print(res)

  5、键keys(),值values(),键值对items()
在python2
>>> dic={'name':'egon','age':18}


>>> dic.keys()
['age', 'name']

>>> dic.values()
[18, 'egon']

>>> dic.items()
[('age', 18), ('name', 'egon')]

在python3
>>> dic={'name':'egon','age':18}

>>> dic.keys()
dict_keys(['name', 'age'])
>>> dic.values()
dict_values(['egon', 18])
>>> dic.items()
dict_items([('name', 'egon'), ('age', 18)])
   6、循环
    dic={'name':'egon','age':18}
    for k in dic:
      print(k)

    for k in dic.keys():
      print(k)

    for v in dic.values():
      print(v)

    for k,v in dic.items():       #k,v=('name', 'egon')
      print(k,v)


****(需要掌握的操作)
  dic={'name':'egon','age':18}
  dic={'name':'egon','age':18}
  dic.update({'age':19,'gender':'male'})
  print(dic)


  dic={'name':'egon','age':18}
  当key存在时,不改原值,返回原值
  res=dic.setdefault('name','EGON')
  print(dic)
  print(res)

  当key不存在时,增加新值
  res=dic.setdefault('gender','male')
  print(dic)
  print(res)


四、集合类型set


1、用途:I: 关系运算 II:去重
2、定义方式:在{}内用逗号分隔开多个元素,但是元素的特点是
  I: 集合内的元素必须是不可变类型
  II: 集合内元素无序
  III: 集合内元素不能重复

  s={1,'aaa',2,} #s=set(...)
  print(s,type(s))

  s=set()
  print(s,type(s))

  s={1,1,1,1,1,1,1,1,1,1,1,1,'a','a','a'}
  print(s)

数据类型转换
  res=set('hello')
  print(res)

  res=set([1,'a','b'])
  print(res)

3、常用操作以及内置的方法
*****(优先掌握的操作):
  1、长度len
  2、成员运算in和not in
    pythons={'张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin'}
    linuxs={'oldboy','张铁蛋','赵银胆','alex','wxx'}
  3、|合集:求所有报名的学生
    print(pythons | linuxs)
    print(pythons.union(linuxs))

  4、&交集:求同时报名两门课程的学生
    print(pythons & linuxs)

  5、-差集: 求只报名python课程的学员
    print(pythons - linuxs)
    print(linuxs - pythons) #求只报名linux课程的学员

  6、^对称差集:求没有同时报名两门课程的学生
    res=(pythons - linuxs) | (linuxs - pythons)
    res=pythons ^ linuxs
    print(res)

  7、==
    s1={1,2,3}
    s2={3,2,1}
    print(s1 == s2)

    注意:父子集描述的是一种包含与被包含的关系
  8、父集:>=
  9、子集:<=
    s1={1,2,3}
    s2={1,2,3,4}
    print(s2 >= s1)
    print(s1 <= s2)

****(需要掌握的)
  s1={1,2,3}
  s1.update({3,4,5,6})
  print(s1)

  s1={1,'aa','bb',3}
  print(s1.pop())

  res=s1.remove('bbbbbb')  #删除不存在的元素会报错
  print(s1)
  print(res)

  s1.discard('bbb')           #删除不存在的元素不会报错
  s1.add(4)
  print(s1)










原文地址:https://www.cnblogs.com/lanlan999/p/10002403.html