第六周 python组合数据类型

 

集合类型及操作

  集合元素之间无序,集合元素不可更改。

  创建

    set("pypy123")

    {'1', '3', 'p', 'y', '2'}       空集合不能用{}生成,留个字典了,  用set()

  关系操作

    交 & 并 |  差 -   补^  支持(&=, |=,  -=, ^=)

    关系操作符 <,<=,>,>=  判断子集关系或包含关系

>>> A = {'p','y',123}
>>> B = set("pypy123")
>>> A-B
{123}
>>> B-A
{'1', '3', '2'}
>>> A&B
{'y', 'p'}
>>> A|B
{'1', '3', 'p', 'y', '2', 123}
>>> A^B
{'1', '3', '2', 123}
>>>  

  方法:

    S.add(x)

    S.discard(x)        #不报错

    S.remove(x)        #没有会报错

    S.clear()

    S.pop()          #随机 pop一个,没有产生异常

    S.copy()

    Len(S)

    x in S / x not in S

  集合应用场景:

    关系判断  

    数据去重:集合类型所有数据无重复

>>> listA = [1,3,2,4,2,1,1,2]
>>> setTemp = set(listA)
>>> listA = list(setTemp)
>>> listA
[1, 2, 3, 4]



序列类型及操作

  序列是一维元素的向量。

  序列类型是基类类型 (元组,列表,字符串)由序列类型衍生

  处理函数:

    x in S / x not in S

    S + t 

    S *n或n*S

    S[i]

    s[i:j]或s[i:j:k]    #切片

  通用函数:

    len(s)

    min(s)       #需要可比

    max(s)      #需要可比

  方法:

    s.index(x)或 s.index(x,i,j)       #从i到j第一次出现的位置

    s.count(x)          #x出现总次数


 

元组类型

  元组是序列类型的一种扩展。

  不可变类型

  定义

    ()或 tuple()

     单个元组 (1,)  要加逗号,区分与基本类型

     可以使用小括号或者不适用小括号

     example:

        def  func():

          return 1,2

     1,2就是一个元组

  操作:

    继承序列的操作

    无特殊操作


 

列表类型

  可变类型

  定义

    []或list()

    列表中各元素类型可以不同,无长度限制

    ex:

>>> ls = ['pig','fish',999]
>>> ls
['pig', 'fish', 999]
>>> lt = ls
>>> lt
['pig', 'fish', 999]

    方括号[]和list真正创建一个列表,赋值操作仅传递引用()浅拷贝

  操作:

    ls[i] = x

    ls[i:j:k] = lt    #用lt替换ls切片后所对应元素子列表

    del ls[i]

    del ls[i:j:k]

    ls += lt

    ls *= n      #使元素重复n遍

  方法:

    ls.append(x)    #后面增加一个元素

    ls.clear()

    ls.copy()      #创建一个新的,深拷贝

    ls.insert(i, x)     #在ls第i个元素前增加元素x

    ls.pop(i)      #取出并删除第i位置元素

    ls.remove(x)     #将ls中出现的第一个元素x删除

    ls.reverse()      #反转

  extend()和append()的区别:

    append(x)只向列表增加一个元素,如果x为列表,则列表x作为一个元素,不会拆分

    extend(seq)参数seq 是元素序列,会将元素拆分依次加到后面

  

>>> ls = list(range(1,5))
>>> ls
[1, 2, 3, 4]
>>> ls.append(1)
>>> ls
[1, 2, 3, 4, 1]
>>> ls.append(1,2,3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (3 given)
>>> ls.append([1,2,3])
>>> ls
[1, 2, 3, 4, 1, [1, 2, 3]]
>>> ls.append((1,2,3))
>>> ls
[1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3)]
>>> ls.append({a:1,b:2})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> ls.append({'a':1,'b':2})
>>> ls
[1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}]
>>> ls.extend(range(5,8))
>>> ls
[1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7]
>>> ls.extend((1,2,3))
>>> ls
[1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7, 1, 2, 3]
>>> ls.extend({'c':3,'d':4})
>>> ls
[1, 2, 3, 4, 1, [1, 2, 3], (1, 2, 3), {'a': 1, 'b': 2}, 5, 6, 7, 1, 2, 3, 'c', 'd']     

序列应用场景

    数据表示

    元组用于元素不改变的场景,多用于固定搭配,数据保护 (const)




 

字典类型

  键值对 索引->数据

  字典是键值对的集合,键值对之间无序

  定义

    {}或dict() 键值间用:分割

  操作和方法:

    del d[k]

    k in d

    d.keys()         #返回所有键    返回类型可以便利,但不能当列表操作

    d.values()        #返回所有值 

    d.items()        #返回所有键值对信息

    d.get(k,<default>)    #键k存在,返回对应值,不存在返回<default>值

    d.pop(k,<default>)    #键k存在,取出对应值,不存在返回<default>值

    d.popitem()       #随机取出一个键值对,以元组的形式反回

    d.clear()   

    len(d)

应用场景

  表达键值对数据,进而操作

  元素遍历

    for k in d:

posted @ 2020-03-26 22:14  vhao11  阅读(340)  评论(0编辑  收藏  举报