容器(collection)

    科技2022-07-17  119

    什么是容器:

    容器就是一种数据类型,复合数据类型,存储多个变量; 容器就是对象,对象都是存储在堆中的;Python中万物皆对象

    Data area:数据区 静态的不变的值

    Code area:代码区

    Stack栈:申请变量 先进后出FILO 后进先出OIFO 栈的空间很小 Heap 堆:容器其实就是对象,对象是存储在堆中的 堆的空间很大

    list 列表

    1、可以存放多个数据

    2、可以有重复的数据

    3、数据是有序的 底层是基于双向链表实现的

    set 集合

    1、可存放多个数据

    2、不能存放重复的数据

    3、存放的数据是无序的

    tuple 元组

    1、可以存放多个数据

    2、可以存放重复的数据

    3、存放的数据是有序的

    4、存放的数据是固定的,不能发生变化的

    dict 字典

    1、存放的是key:value键值对数据

    2、key是不能重复的,vlaue可以重复

    3、存放的数据没有顺序

    list列表

    列表是一种线性表,线性表是有顺序的表,因为有序,所以有下标;且可以存储相同的数据

    线性表的实现:数组(array)、链表(list)、栈(stack)、队列(queue),python中没有数组

    列表的定义

    ​ 1、借助若数据类型语言的特点:直接赋值

    ​ 2、全局函数list

    列表的元素

    1、element 容器中存储的值,列表中元素如何访问或者修改,可以利用下标来访问元素或者修改元素 ls[下标] 下标从0开始 2、获取list中元素的个数 ​ len的全局函数 可以接收可迭代对象 ​ len(ls) # 获取元素的个数

    user [‘aaa’, ‘bbb’, ‘ccc’]

    len(user) 3

    列表的遍历

    ​ for循环就是用于迭代可迭代对象的 ​ while循环,需要一个索引,从0开始

    列表的常见方法

    ​ [‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’,‘pop’, ‘remove’, ‘reverse’, ‘sort’]

    全局函数:

    len(list)可以获取列表中数据的数量

    max(list) 可以获得列表中最大的数据

    min(list) 可以获得列表中最小的数据

    list(seq) 将一个序列数据转换成列表

    set 集合

    Set:无序的、不能重复的 ,因为不能存储相同的数据,所以无下下标

    定义集合

    s = {必须有元素}

    s = set() 全局函数

    常见方法

    ​ add’, ‘clear’, ‘copy’, ‘difference’, ‘difference_update’, ‘discard’, ​ ‘intersection’, ‘intersection_update’, ‘isdisjoint’, ‘issubset’, ‘issuperset’, ​ ‘pop’, ‘remove’, ‘symmetric_difference’, ‘symmetric_difference_update’, ‘union’, ​ ‘update’]

    |-- add(item) # 添加元素 |-- clear # 清空集合 |-- copy(set) # 复制对象(浅拷贝对象) |-- pop() # 随机移除元素 |-- remove(item) # 删除集合元素 |-- discard # 尝试着移除元素 如果元素是成员,则将其从集合中移除。如果元素不是成员,则不执行任何操作。 |-- intersection # 交集 |-- difference # 差集 |-- union # 并集

    #常用方法的简单演示,详细的使用在习题中会详细说明

    name = {“eichi”,“yichen”,“yichentong”} name {‘yichen’, ‘eichi’, ‘yichentong’}

    name.add(“haha”) name {‘yichen’, ‘haha’, ‘eichi’, ‘yichentong’}

    name.add(123) name {‘yichen’, ‘eichi’, ‘yichentong’, ‘haha’, 123}

    user = name.copy() user {‘yichen’, ‘yichentong’, 123, ‘haha’, ‘eichi’}

    user.pop() ‘yichentong’

    user.pop() ‘yichen’

    user {123, ‘haha’, ‘eichi’}

    user.remove(“eichi”) user {123, ‘haha’}

    user {123, ‘haha’}

    user.discard(123) user {‘haha’}

    user {‘haha’}

    name {‘yichen’, ‘eichi’, ‘yichentong’, ‘haha’, 123}

    name.intersection(user) {‘haha’}

    name.difference(user) {‘yichen’, 123, ‘eichi’, ‘yichentong’}

    name.union(user) {‘yichen’, ‘yichentong’, 123, ‘haha’, ‘eichi’}

    集合的遍历

    tuple 元组

    ()包裹的,特点是固定,不能发生变化的,是不可变类型,有序的(可以通过下标来进行访问);可以理解为列表的特殊形式,一旦生命就不允许改变

    #全局函数的解释 Help on class tuple in module builtins:

    class tuple(object) | tuple(iterable=(), /) | | Built-in immutable sequence. | | If no argument is given, the constructor returns an empty tuple. | If iterable is specified the tuple is initialized from iterable’s items. | | If the argument is a tuple, the return value is the same object. |

    #翻译一下 有关模块内置中的类元组的帮助: 类元组(对象) |元组(iterable=,/) |内置不可变序列。 |如果没有给出参数,则构造函数返回一个空元组。 |如果指定了iterable,则元组将从iterable的项初始化。 |如果参数是元组,则返回值是相同的对象。

    元组的元素

    count() 统计某个值的个数

    index() 查看某个值的位置 如存在多个元素,默认查询第一次出现的元素

    元组的注意事项

    元组是不可变类型,也就意味着一旦元组创建,元素的个数、值都将固定,不能修改、删除等操作;这是为了代码的安全性,所以在程序设计开发过程中,对于一部分不需要更改的数据可以定义成元组类型;元组类型的数据类似于C中的枚举类型,如果子元素是可变类型,那就可以改变着个子元素。

    元组的遍历

    与列表、集合类似,采用for循环来进行遍历

    dict 字典

    ​ 字典是一种键值对形式存储的数据结构,键是唯一的,在python中键只能存储字符串类型

    字典的定义

    语法结构:

    字典变量名称={“变量 1”:”值 1”, “变量 2”:”值 2”, “变量 3”:”值 3”,}

    定义的时候以键值对的形式定义存在,相当于给每个值取了名字

    全局函数的解释:

    help(dict) Help on class dict in module builtins:

    class dict(object) | dict() -> new empty dictionary | dict(mapping) -> new dictionary initialized from a mapping object’s | (key, value) pairs | dict(iterable) -> new dictionary initialized as if via: | d = {} | for k, v in iterable: | d[k] = v | dict(**kwargs) -> new dictionary initialized with the name=value pairs | in the keyword argument list. For example: dict(one=1, two=2)

    #翻译一下

    帮助(dict) 关于模块内置中的类dict的帮助: 类dict(对象) |dict()->新建空字典 |dict(映射)->从映射对象的 |(键,值)对 |dict(iterable)->新字典初始化为通过: |d={} |对于iterable中的k,v: |d[k]=v |dict(**kwargs)->用name=value对初始化的新字典 |在关键字参数列表中。例如:dict(one=1,two=2)

    字典的常用方法

    常见方法: ‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’, ‘popitem’, ‘setdefault’, ‘update’, ‘values’] |-- clear() #清空字典 |-- copy(dict) #复制对象(浅拷贝对象) |-- get(key,default)#用于返回键对应的值,参数写的是键,第二个参数,用于给一个默认值,返回的是默认值 |-- keys() #返回键 |-- values() #返回值 |-- items() #返回的是元组 |-- pop(key) # 通过key,移除对应的键值对 |-- popitem # LIFO的顺序 LIFO:last in first out 后进先出 FIFO:firt in first out python无队列 先进先出

    比较

    元组 Tuple 是存放固定的数据 集合 Set 中的数据插入和遍历的时间,随数据增多而变慢 列表 List 中的数据插入和查询的时间,随数据的增多而变慢 字典 Dict 中的数据插入和查询的速度非常快,不会因为数据太多而变慢 元组、集合和列表占用内存较少,字典占用内存较多,字典是一种通过占用空间来换取 操作速度的一种数据类型。

    Processed: 0.011, SQL: 8