zoukankan      html  css  js  c++  java
  • Python笔记 —— 四种容器(列表,元组,字典,集合)

    Python内置容器有四种:列表,元组,字典,集合

    列表

    # 声明
    a = []  # 声明空列表
    b = [1, "hello", 2.5]  # 声明非空列表
    c = [i + 1 for i in range(10)]  # 列表递推式
    d = list(range(3))  # 使用list()把其他可迭代对象转化成列表
    
    # 对运算符的支持
    e = a + b  # 拼接两个列表元素,c = [1, 'hello', 2.5]
    f = 2 * b  # 重复b两遍 d = [1, 'hello', 2.5, 1, 'hello', 2.5]
    
    # 切片操作
    g = c  # 浅拷贝,f是e的引用
    h = c[:]  # 深拷贝
    c[:]  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    c[::]  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    c[0:8:2]  # [2, 4, 6, 8],从下标为0到下标为8,间距为2,左闭右开
    c[-1:-10:-2]  # [10, 8, 6, 4, 2],倒数第一个元素下标视为-1,间距负数代表倒序
    c[0:5:-1]  # [] 不会报错,只会输出空列表
    c[5:]  # 两个参数可以任意省略
    c[5:11:]  # 三个参数也可以任意省略,即使范围
    
    # 对于二元的切片操作,还可以使用赋值运算修改列表
    h  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    h[1:5] = [1]  # [1, 1, 6, 7, 8, 9, 10]
    h[-1:-3] = [0, 0, 0]  # [1, 1, 6, 7, 8, 9, 0, 0, 0, 10]
    
    # 迭代器
    it = c.__iter__()
    print(it.__next__())  # 1
    print(it.__next__())  # 2
    
    # in操作符
    20 in h  # False
    20 not in h  # True
    
    # 列表对于 内建函数 / 语句 的支持
    m = [('a', 3), ('b', 1), ('c', 2)]
    len(c)  # 列表长度 10
    del c[-1]  # 删除元素
    min(m, key=lambda x: x[1])  # ('b', 1),自定义要比较的对象(准确的说并不是自定义比较函数)
    max(m, key=lambda x: x[1])  # ('a', 3)
    tuple(m)  # 把列表转换成元组
    
    # list的成员功能
    c.append(11)  # 在末尾插入一个元素
    c.insert(0, 0)  # 第一个参数是要插入的位置,第二个参数是要插入的值
    c.extend([12, 13])  # 在末尾追加另外一个列表
    c.remove(13)  # 指定一个元素并删除
    c.pop(11)  # 指定一个索引并删除
    c.count(5)  # 指定一个元素,统计这个元素在列表中出现次数
    c.reverse()  # 翻转列表
    c.sort()  # 有两个参数可选,一个是reverse,一个是key
    c.index(5, 2, 10)  # 检索某一个元素出现的位置,可以设置范围
    c.clear()  # 删除所有元素
    
    # 更多关于list的功能需要导入operator包

    字典

    # 创建字典
    a = {}  # 声明一个空字典
    b = {"XiaoMing": 99, "XiaoZhang": 80, "ZhangSan": 100}  # 声明有键值对的字典
    c = b.copy()  # 浅拷贝生成一个字典(也就是引用)
    d = dict.fromkeys(["A", "B", "C"], None)  # 以一个可迭代对象作为键,值全部都为100,创建一个新字典(如果省略value,默认值为None)如果可迭代对象是字典,以这个字典的键作为新字典的键
    
    #
    b["LiSi"] = 60  # 字典不允许存在相同的键,如果这个语句的键已经存在,则会更新值
    b.setdefault("WangWu", 85)  # 和上一行等价
    
    #
    del b["WangWu"]  # 如果键不存在会报错
    b.popitem()  # 随机删除一个键值对(其实是按照哈希表顺序)
    b.pop("ZhangSan")  # 和del等价,不存在也会报错
    
    
    #
    "XiaoMing" in b  # 判断字典中是否有这个键
    b["XiaoMing"]  # 根据键查找值,时间复杂度O(1),因为是哈希表,如果没有这个键会报错
    b.get("XiaoMing", None)  # 查找键“XiaoMing”,但是如果没有找到的话不会报错而是返回指定的值None,因此比上面这行更好
    [k for k, v in b.items() if v == 80]  # 根据值查找键,把所有符合要求的值对应的键组成一个列表,如果没有返回空列表
    
    #
    # 修改键值对的方法和增加键值对的一样,只要键存在就是修改
    # 只能修改值不能修改键(这也就是为什么键不可以是列表或者字典),如果要修改键只能删掉原有的键值对重新添加
    
    # 内置函数
    len(b)  # 返回键值对个数
    str(b)  # 返回显示这个字典的字符串
    
    # 字典类的成员函数
    k = b.keys()  # 返回一个遍历b中所有key的迭代器,需要手动转换成列表或者元组
    v = b.values()  # 返回一个遍历b中所有values的迭代器,需要手动转换成列表或者元组
    i = b.items()  # 返回一个遍历b中所有键值对的以(key, values)元组形式返回的的迭代器,需要手动转换成列表或者元组
    a = b.update()  # 把字典b中的键值对全部更新到a中,这个函数可以实现深拷贝

     元组

    待更新

    集合

    待更新

  • 相关阅读:
    晕晕的一天
    23. 合并K个排序链表
    25. K 个一组翻转链表
    328. 奇偶链表
    86. 分隔链表
    290. 单词规律
    202. 快乐数
    242. 有效的字母异位词
    16.最接近的三数之和
    (转) java 简单工厂模式(实现一个计算器)
  • 原文地址:https://www.cnblogs.com/LC32/p/13253706.html
Copyright © 2011-2022 走看看