欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第六周 python组合数据类型

程序员文章站 2022-06-22 09:16:46
集合类型及操作 集合元素之间无序,集合元素不可更改。 创建 set("pypy123") {'1', '3', 'p', 'y', '2'} 空集合不能用{}生成,留个字典了, 用set() 关系操作 交 & 并 | 差 - 补^ 支持(&=, |=, -=, ^=) 关系操作符 <,<=,>,>= ......

 

集合类型及操作

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

  创建

    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: