• Python3 数据结构


    Python3数据结构:列表list、元组tuple、字典dict、集合set介绍及使用

    整理自公众号Python那些事文章

    =====================================列表===========================================================

    # 创建列表(list)
    li = []
    li2 = [4, 5, 6]

    # 用append在列表最后追加元素
    li.append(1)    # li现在是[1]
    # 用pop从列表尾部删除
    li2.pop()        # => 6 且li2现在是[4,5]
    # 把6再放回去
    li2.append(6)    # li变回[4,5,6]

    # 列表存取
    li[0]  # => 1
    # 取出最后一个元素
    li2[-1]  # => 6

    # 越界存取会造成IndexError
    li[4]  # 抛出异常IndexError

    # 列表切片 li[1, 2, 4, 3]
    li[1:3]  # => [2, 4]
    # 取到尾
    li[2:]  # => [4, 3]
    # 从头取
    li[:3]  # => [1, 2, 4]
    # 隔一定步长取
    li[::2]   # =>[1, 4]
    # 倒排列表
    li[::-1]   # => [3, 4, 2, 1]
    # 三个参数意义:
    # li[始:终:步长]

    # 用del删除任何一个元素
    del li[2]   # li [1, 2, 3]
    # 删除列表:
    # del li

    # 列表可以相加
    # 注意:li和li2的值都不变,可以用li3获取到新的列表

    li3 = li + li2   # => [1, 2, 3, 4, 5, 6]

    # 用extend拼接列表
    li.extend(li2)   # li现在是[1, 2, 3, 4, 5, 6]

    # 用in测试列表是否包含值
    1 in li   # => True

    # 用len取列表长度
    len(li)   # => 6

    =====================================元组===========================================================

    # 元组是不可改变的序列
    tup = (1, 2, 3)
    tup[0]   # => 1
    # tup[0] = 3  # 抛出TypeError

    # 列表允许的操作元组大都可以
    len(tup)   # => 3
    tup + (4, 5, 6)   # => (1, 2, 3, 4, 5, 6)
    tup[:2]   # => (1, 2)
    2 in tup   # => True

    # 可以把元组合列表解包,赋值给变量
    a, b, c = (1, 2, 3)     # 现在a是1,b是2,c是3
    # 元组周围的括号是可以省略的
    d, e, f = 4, 5, 6
    # 交换两个变量的值
    e, d = d, e     # 现在d是5,e是4

    =====================================字典===========================================================

    # 用字典表达映射关系
    empty_dict = {}
    # 初始化的字典 字典中元素排列是无序的
    filled_dict = {"one": 1, "two": 2, "three": 3}

    # 用[]取值, []内填key值
    filled_dict["one"]   # => 1

    # 用 keys 获得所有的键
    list(filled_dict.keys())   # => ["three", "two", "one"]

    # 用values获得所有的值。跟keys一样,要用list包起来,顺序也可能不同
    list(filled_dict.values())   # => [3, 2, 1]

    # 用in测试一个字典是否包含一个键
    "one" in filled_dict   # => True
    1 in filled_dict   # => False

    # 访问不存在的键会导致KeyError
    filled_dict["four"]   # KeyError

    # 用get来避免KeyError
    filled_dict.get("one")   # => 1
    filled_dict.get("four")   # => None
    # 当键不存在的时候get方法可以设置返回的默认值
    filled_dict.get("one", 2)   # => 1
    filled_dict.get("four", 2)   # => 2

    # setdefault方法只有当键不存在的时候插入新值
    filled_dict.setdefault("five", 5)  # filled_dict["five"]设为5
    filled_dict.setdefault("five", 6)  # filled_dict["five"]还是5

    # 字典赋值
    filled_dict.update({"four":4}) # => {"one": 1, "two": 2, "three": 3, "four": 4}
    filled_dict["four"] = 4  # 另一种赋值方法

    # 用del删除
    del filled_dict["one"]  # 从filled_dict中把one删除

    =====================================集合===========================================================

    # 用set表达集合
    empty_set = set()
    # 初始化一个集合,语法跟字典相似,无序。
    some_set = {1, 1, 2, 2, 3, 4}   # some_set现在是{1, 2, 3, 4}

    # 可以把集合赋值于变量
    filled_set = some_set

    # 为集合添加元素
    filled_set.add(5)   # filled_set现在是{1, 2, 3, 4, 5}

    # & 取交集
    other_set = {3, 4, 5, 6}
    filled_set & other_set   # => {3, 4, 5}

    # | 取并集
    filled_set | other_set   # => {1, 2, 3, 4, 5, 6}

    # - 取补集
    {1, 2, 3, 4} - {2, 3, 5}   # => {1, 4}

    # in 测试集合是否包含元素
    2 in filled_set   # => True

  • 相关阅读:
    [摘录]C++ GUI库大全
    ascii 表
    ubuntu 7.04 Feisty Fawn 安装手记之二:基本配置
    二叉排序树之删除结点
    二叉树与数组
    二叉树删除,重建,交换
    二叉树判断相等,复制
    链表扩展是否有环及环的第一个结点
    二分查找
    二叉排序树之按大小遍历
  • 原文地址:https://www.cnblogs.com/yunet/p/12584090.html
Copyright © 2020-2023  润新知