• python进阶---列表、字典、集合相关操作


    基本概念

    列表

    序列是python中一个基本的数据结构,每个元素都有一个索引index

    • 操作
    # 创建列表
    list = []
    # 修改列表
    list[2] = 2001
    # 删除列表
    del list[2]
    

    字典

    字典是另一种可变容器模型,且可存储任意类型对象

    # 定义字典
    d = {key1 : value1, key2 : value2 }
    # 访问字典的值
    d['key1']
    
    # 修改字典的值
    d['key1'] = a
    
    

    字典的特点

    1. 不允许同一个键出现两次
    2. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

    集合

    集合(set)是一个无序的不重复元素序列
    最大的特点无序的 没有重复元素

    # 创建集合
    parame = {value01,value02,...}
    或者
    set(value)
    
    # 添加元素
    s.add( x )
    # 移除元素
    s.remove( x )
    

    如何在列表、字典、集合中根据条件筛选数据

    • 基本做法

    迭代

    1 data = [3, 9, -1, 10, 20, -2]
    2 res = []
    3 for x in data:
    4     if x >= 0:
    5         res.append(x)
    
    • 高级用法
    1. 列表: filter函数和列表解析
    2. 字典:字典解析
    3. 集合:集合解析

    案例实战

    列表相关

    要求筛选出列表中大于0的元素,返回新的列表

    # 利用filter函数
     from random import randint 
     data = [randint(-10, 10) for i in range(10)] 
     list(filter(lambda x: x >= 0, data)) 
     ->输出 [8, 7, 2, 9, 7]
      
      
    # 利用列表解析
    [x for x in data if x>-0] 
    
    ->输出 [8, 7, 2, 9, 7]
    

    两种方式相比,列表解析的时间复杂度更好,运行速度快

    字典相关

    构造一个班级20人,字典的key和value分别是学号和成绩,根据不同条件筛选

    # 构造字典
    from random import randint
    d = {x: randint(60, 100) for x in range(1, 21) }
    # 字典解析
    # 筛选出成绩大于90的学生
     {k: v for k, v in d.items() if v>90} 
    

    集合相关

    from random import randint 
    data = [randint(-10, 10) for i in range(10)] 
    s = set(data)
    {x for x in s if x % 3 = 0}
    

    ps:filter函数在python2和python3中的不同

    # python2
    filter(lambda x: x >= 0, data)
    输出:[8, 7, 2, 9, 7]
    # python3
    filter(lambda x: x >= 0, data)
    输出: <filter at 0x105f955c0>返回一个过滤器对象
    

    在python3中要返回列表,需要用list()做强制转换

    list(filter(lambda x: x >= 0, data)) 
    

    欢迎关注公众号

  • 相关阅读:
    python 文件路径拼接、判断、创建、输出
    热力图制作
    矩阵文件添加列标签
    cmd运行 ‘.py’ 文件
    hdu 2017 字符串统计
    hdu 2016 数据的交换输出
    hdu 2014 青年歌手大奖赛_评委会打分
    hdu 2013 蟠桃记
    hdu 2012 素数判定
    hdu 2011 多项式求和
  • 原文地址:https://www.cnblogs.com/codeBang/p/11188439.html
Copyright © 2020-2023  润新知