zoukankan      html  css  js  c++  java
  • 06-Python元组,列表,字典,集合数据结构

    简介

    数据结构是我们用来处理一些数据的结构,用来存储一系列的相关数据。

    python中,有列表,元组,字典和集合四种内建的数据结构。

    二、列表

    用于存储任意数目、任意类型的数据集合。列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表可以包含数字,字符串等,表示如下:

    a = [1,’name’,’努力奋斗’,True]

    列表的创建:

    1.基础创建

    a = []

    2.list创建

    a = list()

    3.range创建整数列表

    range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为:

    range(start, end ,step)

    start 参数:可选,表示起始数字。默认是0

    end 参数:必选,表示结尾数字。

    step 参数:可选,表示步长,默认为1

    a = list(range(4))  a = [0,1,2,3]

    a = list(range(3,10,2)) a = [3, 5, 7, 9]

    以下是一些常用的方法(以a = [1,’name’,’努力奋斗’,True]b = [1,’a’,False]例):

    方法

    含义

    描述

    例子

    结果

    list.append(x)

    增加元素

    将元素x 增加到列表list 尾部

    a.append(10)

    a = [1,’name', '努力奋斗', True, 10]

    list.extend(aList)

    增加元素

    将列表alist 所有元素加到列表list 尾部

    a.extend(b)

    a = [1,’name', '努力奋斗', True,, 1, 'a', False]

    list.insert(index,x)

    增加元素

    在列表list 指定位置index 处插入元素x

    a.insert(2,8)

    a = [1, 'name', 8, '努力奋斗', True]

    list.remove(x)

    删除元素

    在列表list 中删除首次出现的指定元素x

    a.remove(1)

    a = ['name', '努力奋斗', True]

    list.pop(index)

    删除元素

    删除并返回列表list 指定位置index 处的元素,默认是最后一个元素

    a.pop(2)

    a.pop(2)返回'努力奋斗',则a = [1, 'name', True]

    list.clear()

    删除元素(所有)

    删除列表所有元素,并不是删除列表对象

    a.clear()

    a = []

    list.index(x)

    访问元素

    返回第一个x 的索引位置,若不存在x 元素抛出异常

    a.index(‘name’)

    返回结果1,即;name在列表中的排序是1

    list.count(x)

    计数

    返回指定元素x 在列表list 中出现的次数

    a.count(‘name’)

    返回1,即name在列表a中出现了1

    list.count(x)

    计数

    返回指定元素x 在列表list 中出现的次数

    a.count(True)

    a.count(1)

    返回2,即True在列表a中出现了2次,在这个列表中1可以认为是True,同理True也可以认为是1

    len(list)

    列表长度

    返回列表中包含元素的个数

    Len(a)

    返回4,即在这个列表中有4个元素

    list.reverse()

    翻转列表

    所有元素原地翻转

    a.reverse()

    a = [True, '努力奋斗', 'name', 1]

    list.sort()

    排序

    所有数字元素原地排序

    a.sort()

    这个会报异常,因为列表中同时含有字符串和数字不能排序

    list.copy()

    浅拷贝

    返回列表对象的浅拷贝

    c = a.copy()

    c = [1, 'name', '努力奋斗', True]

    三、元组

    元组用来将多样的对象集合到一起,元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。

    元组的创建:

    1.基础创建

    a = ()

    2.tuple创建

    a = tuple()

    3..range创建整数元组

    a = tuple(range(4)) ---------àa = (0, 1, 2, 3)

    总结:

    tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。

    list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。

    注意:元组只有一个元素时必须在后面加逗号,如:a = (1,)

    元组中有非零个元素时,可以省去括号,如

    a = (1,)   a = 1,相同

    a = (a = 1,'name','努力奋斗',True) a = 1,'name','努力奋斗',True相同

    但是为保证书写的规范,还是建议随时随地带上括号。

    元组的访问元组可以使用下标索引来访问元组中的值,如下实例:

    元组的截取:

    注意:在列表和元组中,正向排序第一个元素是0位,第二位元素是1位,以此类推。反向排序倒数第一位是-1位。

    截取元素时,规则是包头不包尾,即包含开始的元素,不包含结尾的元素。以a[1:4]为例,包含1位(第二个)元素,不包含4位(第五个)元素。

    元组的内置函数

    1. len(tuple)-----------计算元组元素个数。

    2. max(tuple)---------返回元组中元素最大值。

    3. min(tuple)----------返回元组中元素最小值。

    4. tuple(list)-----------将列表转换为元组。

    5. um(tuple)-----------计算数字元组的和。

    Zip

    zip(列表1,列表2...)将多个列表对应位置的元素组合成为元组,并返回这个zip 对象。

     

    注意:这个zip对象只能使用一次,之后便会失效。

    四、字典

    字典是由键值对组成的无序可变序列,在字典中,健必须是唯一且不可重复的,但值可以是任意数据,且可以重复。

    字典的创建

    1.基础创建

    a = {}

    2.通过tuple创建

    a = dict()

    3.通过zip创建

    a = [1,'name','努力奋斗',True]

    b = [1,2,3]

    dict(zip(a,b))

     

    4. 通过fromkeys 创建值为空的字典

    a = dict.fromkeys(['today','work','time'])

    字典的增删改查

    增:在字典里增加新的键值对

    >>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}

    >>>a['eat'] = 'chicken'

    >>>a

    {'today': '2019/7', 'work': 'waiter', 'time': 10, 'eat': 'chicken'}

    删:分为两种,一种是删除字典里的键值对,但字典还存在,只是为空字典;另一种直接删除这个字典,使其不存在。

    >>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}

    >>>a.clear()   #清空字典

    >>>a

    {}

    >>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}

    >>>del a

    >>>a   #删除字典后不存在,所以报错

    Traceback (most recent call last):

      File "<input>", line 1, in <module>

    NameError: name 'a' is not defined

    改:修改字典的值,健不能修改

    >>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}

    >>>a['time'] = 12

    >>>a

    {'today': '2019/7', 'work': 'waiter', 'time': 12}

    查:使用相应的健查询

    >>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}

    >>>a['today']

    '2019/7'

    >>>a.get('time')

    10

    两种方式的不同在于,[]访问的健如果不存在会报错,get()访问的健不存在则会返回None

    查询所有键值对

    >>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}

    >>>a.items()

    dict_items([('today', '2019/7'), ('work', 'waiter'), ('time', 10)])

    查询所有健或值

    >>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}

    >>>a.keys()

    dict_keys(['today', 'work', 'time'])

    >>>a.values()

    dict_values(['2019/7', 'waiter', 10])

    五、集合

    集合是一个无序的不重复元素序列。

    集合的创建:使用大括号{}或者set()创建,但是创建空集合只能使用set()创建。Set可以将列表元组转换为集合,但是会消除重复的部分。字典也可转换为集合,但只保留健。

    a = {1,’name’,3}

    >>>a = set('1name3')

    >>.a

    {'3', 'e', 'n', 'm', '1', 'a'}

    列表转换为集合

    >>>a = [1,'name','努力奋斗',True]

    >>>set(a)

    {1, 'name', '努力奋斗'}

    元组转换为集合

    >>>a = (1,'name','努力奋斗',True)

    >>>set(a)

    {1, 'name', '努力奋斗'}

    字典转换为集合

    >>>a = {1:'name','努力奋斗':True}

    >>>set(a)

    {1, '努力奋斗'}

    集合的并集,交集与差集,以a = {2,’your’,’Bob’,5}b = {‘name’,’Bob’,21}为例。

    并集:合为同一个集合,去除重复项

    >>>a = {2,'your','Bob',5}

    >>>b = {'name','Bob',21}

    >>>a|b

    {2, 'Bob', 5, 'your', 21, 'name'}

    >>>a.union(b)

    {2, 'Bob', 5, 'your', 21, 'name'}

    交集:两个集合的相同部分

    >>>a = {2,'your','Bob',5}

    >>>b = {'name','Bob',21}

    >>>a&b

    {'Bob'}

    >>>a.intersection(b)

    {'Bob'}

    差集:一个集合在另一个集合没有的部分。

    >>>a = {2,'your','Bob',5}

    >>>b = {'name','Bob',21}

    >>>a - b

    {2, 5, 'your'}

    >>>a.difference(b)

    {2, 5, 'your'}

    集合一些内置方法

    方法

    说明

    add()

    为集合添加元素

    clear()

    移除集合中的所有元素

    copy()

    拷贝一个集合

    difference()

    返回多个集合的差集

    difference_update()

    移除集合中的元素,该元素在指定的集合也存在。

    discard()

    删除集合中指定的元素

    intersection()

    返回集合的交集

    intersection_update()

    返回集合的交集。

    isdisjoint()

    判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False

    issubset()

    判断指定集合是否为该方法参数集合的子集。

    issuperset()

    判断该方法的参数集合是否为指定集合的子集

    pop()

    随机移除元素

    remove()

    移除指定元素

    symmetric_difference()

    返回两个集合中不重复的元素集合。

    symmetric_difference_update()

    移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

    union()

    返回两个集合的并集

    update()

    给集合添加元素

  • 相关阅读:
    学习Timer定时器
    C++ 延时等待(sleep/timer/wait)
    MFC学习问题总结
    node.js
    总结
    关于Windows
    关于数组
    每周一次
    每周一次
    每周一次
  • 原文地址:https://www.cnblogs.com/clearlie/p/13182293.html
Copyright © 2011-2022 走看看