wangwt123

Python数据结构-列表-元组-字典

一、列表
所谓列表,我们可以简单的把它理解为按照索引存放各种集合,在列表中,每个位置代表⼀个元素。在Python中,列表的对象⽅法是list类提供的,列表是有序的。
在Python中,用方括号([])表示列表,并用逗号分割其中的元素。
列表的特点具体如下:

  1. 可存放多个值
  2. 按照从左到右的顺序定义列表元素,下标从0开始顺序访问,同时也为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1。
  3. 列表是有序的
  4. 列表也是可变化的,也就是说可以根据列表的索引位置来修改或者访问列表的元素。
  5. 列表也可以以多种类型存在比如:int型、float型、bool型、str型等。
    a:增加:.append()函数和.insert()函数
    .append()函数:添加的元素默认在列表的最后一位,如下图所示:

    .insert()函数:可以指定元素添加的位置,如下图所示:

    b:删除:.pop()函数和.remove()函数和del语句
    .pop()函数:“返回”删除的对象(默认删除最后一位),并让你能够接着使用它的值,如下图所示:

    .remove()函数:指定要删除的元素,有时候你不知道要从列表中删除的值所处的位置,就可以使用该函数,如下图所示:

    del语句:可删除任意位置处的列表元素,如下图所示:

    c:其他:.copy()函数,.count()函数,.index()函数,.clear()函数和len()函数
    .copy()函数:复制列表,如下图所示:

    .count()函数:列表中元素的个数,如下图所示:

    .index()函数:在列表中获取对象的索引,也是按照线性查找,如下图所示:

    .clear()函数:清空列表里的对象,如下图所示:

    len()函数:获取列表中元素的个数长度,如下图所示:

    d:.extend()函数:往一个列表里追加另一个列表的元素,如下图所示:

    e:列表的修改,找到并重新赋值,如下图所示:

    f:.reverse()函数:列表内容反转180度,如下图所示:

    g:.sort()函数:对列表进行永久的排序,默认是从小到大排序,而且是相同属性进行排序,如下图所示:

    如果不是相同属性,则无法进行排序,系统会报错,如下图所示:

    h:sorted()函数:对列表进行临时排序,同时不影响它们在列表中的原始排列顺序,如下图所示:

    h:enumerate()函数:是遍历数据对象,索引数,如下图所示:

    其中:.index()函数和enumerate()函数的区别:
    .index()返回的是查找对象的索引位置,而且对于如果一个数组中含有相同的数值,那么使用index就无法做到遍历,输出的数值下标信息不全,会有重复。而enumerate函数可以很好的解决这个问题。
    enumerate()函数是遍历数据对象,可以返回元素和元素下标。
    i:列表的切片,如下图所示:

    j:列表的推导式,如下图所示:

    将上图分解如下理解:

    k:zip()函数,要一一对应,如下图所示:
    第一种方式:如下图所示:

    第二种方式:如下图所示:

    而如下这种:

    如果两个表里的元素个数不对应,如下图所示:

    l:集合:set()函数
    怎么取出列表中相同的数据和不同的数据?
    1、把列表转为set集合
    2、然后按照所要求进行一系列交集,并集以及差集
    如下图所示:

    二、元组
    1、列表与元组的区别:
    a、与列表相似,不同之处就在于元组的元素不能被修改。
    b、列表使用的是中括号“[]”,元组使用的是小括号“()”。
    c、列表属于可变类型,可变是指可以添加新的元素,也可以删除已有的元素,元组属于不可变类型。
    d、Python内部对元组进行了大量的优化,访问和处理速度都比列表快。
    2、元组的数据类型就是元组(tuple)
    a、元组某一元素出现的次数和索引,如下图所示:

    b、元组里某一个元素的获取,如下图所示:

    c、元组里某一元素的修改,因为元组是不可变的,这里的不可变是形式不可改,但内容可以改动。
    如下图的元组里的元素无法对字符串进行改动,但是可以元组元素里的列表进行改动,如下图所示:


    d、当元组里面的元素只有一个的时候,记得加逗号,不加逗号是str()类型,如下图所示:
    不加逗号:

    加逗号:

    三、列表-元组实战
    eg1:1、输出所有人的成绩
    2、获取成绩里面的最高分、最低分、平均分数,并且进行排序
    1、如图所示:

    另一种表示方法:

    2、如图所示:

    另一种表示方法:

    这里.sort()应当是先排序,然后打印,才会出现结果
    如果直接print(score.sort()),会出现none,如下图所示:

    eg2:获取公司数据,合理的取数据

    这里的“*”需要认真体会!
    b、提取出Java,如下图所示:

    eg3:公司福利,连接成字符串,如下图所示:

    四、字典
    1、特点:
    a:字典是无序的,无需是指当有大量的数据存在时,字典里的对象的顺序会被打乱。
    b:字典是通过key-value键值对的数据形式来存储的。
    2、字典知识点合集
    a:获取value的值,如下图所示:

    b:增加字典的对象,如下图所示:

    c:修改字典里的某个值,如下图所示:

    d:删除字典里的某个值,如下图所示:

    e:获取字典里所有的key值,如下图所示:

    f:获取字典里所有的value值,如下图所示:

    g:让字典循环,如下图所示:

    h:让一个字典追加在另一个字典上,使用update,如下图所示:

    i:复杂的字典,一个个相互嵌套,如下图所示:

    j:字典的排序:
    data=dict(sorted(dict1.items(),key=lambda item:item[0]))的解释:
    1、字典的排序使用的关键字是sorted()
    2、dict1.items()针对字典进行循环输出key和value
    3、在sorted内部,把key和value分别存储在不同的列表中
    4、然后根据key=lambda item:item[0]来进行排序处理
    A、根据索引来进行排序
    B、把排序后的结果信息然后进行拼接
    5、强制的转为字典的数据类型
    如下图所示:

    k:实现字典的有序:OrderedDict(),是以我们的主观意愿来排序,如下图所示:

    五、字典实战
    获取所有的城市名字
    eg1:date4={"code":0,"message":"Success","zpData":[{"name":"全国","code":100010000,"url":"/?city=100010000"},{"name":"北京","code":101010100,"url":"/beijing/"},{"name":"上海","code":101020100,"url":"/shanghai/"},{"name":"广州","code":101280100,"url":"/guangzhou/"},{"name":"深圳","code":101280600,"url":"/shenzhen/"},{"name":"杭州","code":101210100,"url":"/hangzhou/"},{"name":"天津","code":101030100,"url":"/tianjin/"},{"name":"西安","code":101110100,"url":"/xian/"},{"name":"苏州","code":101190400,"url":"/suzhou/"},{"name":"武汉","code":101200100,"url":"/wuhan/"},{"name":"厦门","code":101230200,"url":"/xiamen/"},{"name":"长沙","code":101250100,"url":"/changsha/"},{"name":"成都","code":101270100,"url":"/chengdu/"},{"name":"郑州","code":101180100,"url":"/zhengzhou/"},{"name":"重庆","code":101040100,"url":"/chongqing/"},{"name":"佛山","code":101280800,"url":"/foshan/"},{"name":"合肥","code":101220100,"url":"/hefei/"},{"name":"济南","code":101120100,"url":"/jinan/"},{"name":"青岛","code":101120200,"url":"/qingdao/"},{"name":"南京","code":101190100,"url":"/nanjing/"},{"name":"东莞","code":101281600,"url":"/dongguan/"},{"name":"昆明","code":101290100,"url":"/kunming/"},{"name":"南昌","code":101240100,"url":"/nanchang/"},{"name":"石家庄","code":101090100,"url":"/shijiazhuang/"},{"name":"宁波","code":101210400,"url":"/ningbo/"},{"name":"福州","code":101230100,"url":"/fuzhou/"}]}
    步骤一:将上面的内容复制到JSON在线查看器里,我们会看到它的逻辑结构如下,
    其中JSON在线查看器的网址是:[https://www.bejson.com/jsonviewernew/]

    步骤二:再将上面的内容复制到paycharm里,我们运行一下,看是否有报错,如下图所示:

    步骤三:通过编辑代码,获取所有的城市名字,如下图所示:

    eg2:由于数据较多,就和上题大体一样
    步骤一:将上面的内容复制到JSON在线查看器里,我们会看到它的逻辑结构如下,

    步骤二:再将上面的内容复制到paycharm里,我们运行一下,看是否有报错,如下图所示:

    出现了报错信息,经过查询,需要给windows系统,添加#coding=gb2312,并将null替换(CTRL+R)为None,在PyCharm里替换是“Ctrl+R”,再次运行,如下图所示:

    步骤三:通过编辑代码,获取所有的城市名字,如下图所示:

posted on 2022-06-13 20:12  DOUBLE快乐  阅读(133)  评论(0编辑  收藏  举报

导航