首页
学习
活动
专区
圈层
工具
发布

Python 工匠:容器的门道

序言这是 “Python 工匠”系列的第 4 篇文章容器”这两个字很少被 Python 技术文章提起。一看到“容器”,大家想到的多是那头蓝色小鲸鱼:Docker,但这篇文章和它没有任何关系。...本文里的容器,是 Python 中的一个抽象概念,是对专门用来装其他对象的数据类型的统称。...Python 语言自身的内部实现细节也与这些容器类型息息相关。比如 Python 的类实例属性、全局变量 globals() 等就都是通过字典类型来存储的。...要真正掌握 Python 里的容器,需要分别从两个层面入手:底层实现:内置容器类型使用了什么数据结构?某项操作如何工作?高层抽象:什么决定了某个对象是不是容器?哪些行为定义了容器?...下面,让我们一起站在这两个不同的层面上,重新认识容器。---底层看容器Python 是一门高级编程语言,它所提供的内置容器类型,都是经过高度封装和抽象后的结果。

61920

Python 工匠:容器的门道

一看到“容器”,大家想到的多是那头蓝色小鲸鱼:Docker,但这篇文章和它没有任何关系。本文里的容器,是 Python 中的一个抽象概念,是对专门用来装其他对象的数据类型的统称。...Python 语言自身的内部实现细节也与这些容器类型息息相关。比如 Python 的类实例属性、全局变量 globals() 等就都是通过字典类型来存储的。...要真正掌握 Python 里的容器,需要分别从两个层面入手: 底层实现:内置容器类型使用了什么数据结构?某项操作如何工作? 高层抽象:什么决定了某个对象是不是容器?哪些行为定义了容器?...下面,让我们一起站在这两个不同的层面上,重新认识容器。 底层看容器 Python 是一门高级编程语言,它所提供的内置容器类型,都是经过高度封装和抽象后的结果。...这是 Python 编程语言的优势之一。相比 C 语言这类更接近计算机底层的编程语言,Python 重新设计并实现了对编程者更友好的内置容器类型,屏蔽掉了内存管理等额外工作。

80610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 中的容器 collections

    本文字数:3365 字 阅读本文大概需要:9 分钟 写在之前 我们都知道 Python 中内置了许多标准的数据结构,比如列表,元组,字典等。...Python 附带了一个「容器」模块 collections,它包含了很多的容器数据类型,今天我们来讨论其中几个常用的容器数据类型,掌握了这几个可以减少我们重复造轮子所带来的烦扰。...namedtuple 相信你已经熟悉了元组,如果不熟悉请看这篇(零基础学习 Python 之元组)。一个元组相当于一个不可变的列表,你可以存储一个数据的序列。...作为元组,为了获取其中的数据,我们需要使用整数作为索引: >>> people = ('Rocky', 'python') >>> print(people[0]) Rocky 而 namedtuple...把元组变成了一个针对简单任务的容器,我们不必使用整数索引来访问 namedtuple 的数据,反而可以像用字典一样访问 namedtuple。

    87730

    python – 数据容器

    五种数据容器 1.list(列表) 2.tuple(元组) 3.str(字符串) 4.set(集合) 5.dict(字典) 一.list(列表) 定义空列表可以使用[] 列表中的元素的是有上限的,只是比较大基本上都可以满足日常使用...- 判断字符转是否为纯数字 msg.isdigit() 数据容器的切片 大概的意思就是将字符串或者列表/元组里的元素分为一个个小块,取出指定的一部分元素 """ str = "123456789" str...dict = {1:"a",2:"b",3:"c"} print(f"dict中的元素数量为 - {len(dict)}") 数据容器的通用操作 max() – 取出数据容器中的最大元素 min()...– 取出数据容器中的最小元素 sorted() – 对容器进行排序默认从小到大,排序的结果为列表,如果需要从大到小则改为sorted(,reverse=Ture) list() – 将其它类型容器转换为列表容器...str() – 将其它类型容器转换为字符串容器 tuple() – 将其它类型容器转换为元组容器 set() – 将其它类型容器转换为集合容器

    56520

    Python 排序容器

    Python 的标准库没有排序容器,这些内容在 sortedcontainers 包中有了实现。...sortedcontainers Python 标准库没有实现排序容器,在 sortedcontainers 库中有了相关实现。...sortedcontainers 官方文档:http://www.grantjenks.com/docs/sortedcontainers/ Sorted Containers ,主要包含三类排序容器...sorted dict 的设计很简单:sorted dict 继承自 dict 来存储项目,并维护一个有序的 key 列表。 排序的 dict 键必须是可散列的和可比较的。...排序后的集合值按排序顺序维护。排序集的设计很简单:排序集使用集合进行集合操作并维护一个排序的值列表。 排序后的集合值必须是可散列的和可比较的。值的散列和总排序在存储在排序集中时不得更改。

    52520

    Python数据容器:字典

    前言 在 Python 中,数据容器是组织和管理数据的重要工具,字典作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了字典的定义、常用操作以及遍历方法。...本篇文章参考:黑马程序员 一、字典的定义 Python中字典和生活中字典十分相像: 生活中的字典可以按【字】找出对应的【含义】 Python中的字典:可以按【Key】找出对应的【Value】 ①基本语法...小空': 89},类型为 Python的字典是基于哈希表(hash table)实现的。...字典中的每个键都通过一个哈希函数计算出一个哈希值,这个哈希值决定了键在内存中的存储位置。由于哈希值的计算和存储顺序不是固定的,因此字典的键是无序的。...在Python 3.6及以后的版本中,插入字典的顺序会被保留,但无序的特性仍然是其基本性质,因此字典不支持下标索引,我们通常使用键访问字典中的值。

    30421

    Python数据容器:集合

    前言在 Python 中,数据容器是组织和管理数据的重要工具,集合作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了集合的定义、常用操作以及遍历方法。...本篇文章参考:黑马程序员一、集合的定义我们目前已经学习了列表、元组、字符串三个数据容器了,基本能满足大多数的使用场景,但为何又需要学习新的集合类型呢?...通过特性来分析:列表可修改、支持重复元素且有序元组、字符串不可修改、支持重复元素且有序我们发现列表、元组、字符串这三个数据容器局限在于它们都支持重复元素。...}")输出结果:集合的元素有1集合的元素有2集合的元素有3【例题】有如下列表对象:my_list = ['新闻', '传播', '新闻', '传播', 'Hi', 'Python', 'Hi', 'Python...{my_set}")输出结果:列表的内容为'新闻', '传播', '新闻', '传播', 'Hi', 'Python', 'Hi', 'Python', 'best'通过for循坏得到的集合为{'Hi'

    1.4K31

    Python数据容器总结

    前言Python 作为一种高级编程语言,内置了多种强大的数据容器,帮助开发者以更加直观和灵活的方式处理复杂的数据结构。...常见的 Python 数据容器包括列表(List)、元组(Tuple)、字典(Dict)和集合(Set)。每种容器都有其独特的特性和适用场景,适合存储不同类型的数据。...本篇文章参考:黑马程序员一、数据容器对比在前面章节的学习中,我们深入了解了列表(List)、元组(Tuple)、字典(Dict)和集合(Set)这五类数据容器的特点及其应用场景。...数据容器特点对比:二、数据容器的通用操作数据容器通用功能:①遍历:五类数据容器都支持for循环遍历。...②统计数据容器的元素总数:统计数据容器中全部元素的数量语法:len(数据容器)my_list = [1, 2, 3, 4, 5]my_tuple = (1, 2, 3, 4, 5)my_str = "abcdefg"my_set

    39322

    Python 内建容器类型

    在 Python 中,有四类最常见的内建容器类型:列表(list)、元组(tuple)、字典(dict)、集合(set)。通过单独或是组合使用它们,可以高效的完成很多事情。...Python 是一门高级编程语言,它所提供的内置容器类型,都是经过高度封装和抽象后的结果。...和 “链表”、“红黑树”、“哈希表” 这些名字相比,所有 Python 内建类型的名字,都只描述了这个类型的功能特点,其他人完全没法只通过这些名字了解它们的哪怕一丁点内部细节。...这是 Python 编程语言的优势之一。相比 C 语言这类更接近计算机底层的编程语言,Python 重新设计并实现了对编程者更友好的内置容器类型,屏蔽掉了内存管理等额外工作。...作为 key 的元素必须不可变 Python 的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是 list 是可变的,就不能作为 key。

    1.4K10

    Python工匠:解析容器类型的门道

    一看到“容器”,大家想到的多是那头蓝色小鲸鱼:Docker,但这篇文章和它没有任何关系。本文里的容器,是 Python 中的一个抽象概念,是对专门用来装其他对象的数据类型的统称。...Python 语言自身的内部实现细节也与这些容器类型息息相关。比如 Python 的类实例属性、全局变量 globals()等就都是通过字典类型来存储的。...但这个定义太宽泛了,无法对我们的日常编程产生什么指导价值。要真正掌握 Python 里的容器,需要分别从两个层面入手: 底层实现:内置容器类型使用了什么数据结构?某项操作如何工作?...底层看容器 Python 是一门高级编程语言,它所提供的内置容器类型,都是经过高度封装和抽象后的结果。...这是 Python 编程语言的优势之一。相比 C 语言这类更接近计算机底层的编程语言,Python 重新设计并实现了对编程者更友好的内置容器类型,屏蔽掉了内存管理等额外工作。

    86720

    Python的内置容器不止有listdictsettuple

    “python没有什么数据结构是用list解决不了的,如果有,那就再加个dict。” ——初学python时的自己 ? 导读:初学python时,遇到各类数据结构都会习惯性的想到列表。...原来,python还有这么多强大的内置容器! 01 初识collections Collections模块是python的内置模块之一,提供了很多容器类型。...collections模块提供了9种容器类型 (适用于python3.8及更早版本) collections模块当前包括9类容器接口,本文主要介绍其中比较常用的3种数据类型:deque,defaultdict...,但实际上collections中针对计数操作还有一个更加专业的容器类型:Counter。...05 总结 collections模块提供了很好的容器型数据结构,对于python通用内置类型list、dict等是一个很好的扩展和补充 deque实现了一个双端队列,可以实现O(1)复杂度的双向添加和弹出元素以及扩展

    86420

    python中的容器序列类型collections

    1、namedtuple():构造带字段名的元组 具名元组的特有属性: 类属性 _fields:包含这个类所有字段名的元组 类方法 _make(iterable):接受一个可迭代对象来生产这个类的实例...对ChainMap中的元素进行操作都是对第一个映射中的元素进行操作。 该容器用的不多。 4、Counter:用于计数可哈希对象,像列表、字符串等等。 ?...由于内置的dict类获得了记住插入顺序的能力(在 Python 3.7 中保证了这种新行为),它们变得不那么重要了。 一些与dict的不同仍然存在: 常规的 dict被设计为非常擅长映射操作。...跟踪插入顺序是次要的。 OrderedDict 旨在擅长重新排序操作。 空间效率、迭代速度和更新操作的性能是次要的。...Python 3.8之前,dict缺少__reversed__方法。 一句话总结:OrderedDict与普通的dict不同,它会记录放入元素的顺序。

    94720

    Python入门:7.Pythond的内置容器

    引言 Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。...在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。...一、容器的概念 容器是用来存储多个数据的对象。在 Python 中,容器根据数据是否有序、是否可变、是否重复等特性被划分为多种类型。...Python 的容器可以相互转换,这使得它们在不同场景下非常灵活。...(dict) 存储键值对 可变 无序 不适用(键唯一) 集合(set) 存储键 可变 无序 不允许 通过掌握这些内置容器的特点和用法,可以更高效地组织和操作数据,从而编写简洁优雅的 Python 代码

    23810

    使用 eBPF 调试 Python 容器

    随着 Docker/Kubernetes 等容器技术的盛行,越来越多的 Python 应用已经运行在容器中了。在带来便利性的同时,也让生产环境中的 debug 变的复杂。...以下是我在 PyCon China 2020 上的分享,为你介绍如何使用 eBPF 技术对 Python 应用的容器进行 debug,更高效的定位和解决问题。 主要从以下四个方面来聊 ?...如何调试 Python 代码 ? ? ? 如何定位系统性能瓶颈 ? ? ? ? ? ? eBPF 是什么 这里我画了一个图来表示整体的工作流程。 ?...写 eBPF 程序的方法有很多中, 以下逐一进行介绍。 ? ? bcc 是一个工具集 ? ? ? ? ? ? ? 使用 eBPF 调试 Python 容器需要注意什么 ? ?...以上便是本次分享的主要内容。完整的 PPT 可在后台回复 ebpf 获取。

    79620

    python 盛最多水的容器 多种解法

    ,an,每个数代表坐标中的一个点(i, ai)。在坐标内画 n 条垂直线,使得线 i 的两个端点分别为(i, ai)和(i, 0)。找出其中的两条线,使得它们与 x 轴形成的容器可以容纳最多的水。...一、暴力法 思路:遍历所有可能的组合,计算每个组合对应的容积,找到最大值。...w max_area = max(max_area, area) return max_area 时间复杂度:O(n^2) 二、双指针法 思路:使用两个指针分别指向数组的左右两端...,计算当前两个指针所对应的容积,然后移动较短的那个指针,再次计算容积,直到两个指针相遇。...因此,我们可以先计算当前两个指针所对应的容积,然后移动较短的那个指针,直到它指向比它大的位置为止。

    7700

    Python 变量,是容器还是标签?

    变量的赋值 之前说到,Python 中的「赋值」操作符就是一个等号(=)。通过赋值操作可以创建一个变量,也可以修改一个变量的已有值。...Python 变量不是一个「容器」 接下来讲的这点有一点点进阶。...很多人在了解的变量的使用之后,可能会把变量想象一个装数据的「容器」,就好比一个杯子,赋值就是往里面倒饮料,重新赋值就是倒上其他的饮料。 这种理解在 C++ 这样的语言里是没有问题的。...❌ Python 里的变量,与其说是装数据的容器,倒不如说是贴在数据上的标签。 变量并不占用空间,占用空间的是数据本身。当你重新赋值时,就相当于撕下这个标签,贴纸另一个数据上。...网上大多数教程都讲错了 继续打脸水货教程:关于可变对象与不可变对象 对于 Python 的变量赋值,你还要什么想了解的内容?欢迎在留言区讨论。 _往期文章推荐_ Python变量基础

    34521

    python 容器 用户注册登录系统

    列表和普通变量有什么区别   列表是数据类型,普通变量是用来存储数据的   可以把列表赋值给普通变量 2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44   a.append...(44)   或者   a.insert(3,44) #索引号为3 3.对列表排序   a = [11,22,33,2]   b = sorted(a) #创建了一个新的列表 ,a.sort()修改...22, 33, 44] 4.存在字典 info = {'name':'李四'}, 删除元素 name   del info["name"]   或者   info.pop("name") 5.字典和列表的不同以及使用字典的目的...  字典是以键值对的形式存储数据的,字典是无序的,通过键获取到对应值   列表是有序的,通过下标获取到值   使用字典可以存储一些有标识性的数据,可以为数据起一个特定的名字。...,del list[index],list.pop(index),list.remove(s) 字典的删除方式,del dict[key], dict.pop(key) set的删除方式,set.pop

    2.1K10

    Python学习笔记之容器(Collections)

    容器(Collections) Python附带一个模块,它包含许多容器数据类型,名字叫作collections。我们将讨论它的作用和用法。...d = deque() 它的用法就像python的list,并且提供了类似的方法,例如: d = deque() d.append('1') d.append('2') d.append('3') print...它把元组变成一个针对简单任务的容器。你不必使用整数索引来访问一个namedtuples的数据。你可以像字典(dict)一样访问namedtuples,但namedtuples是不可变的。..._asdict()) ## 输出: OrderedDict([('name', 'Perry'), ('age', 31), ... enum.Enum (Python 3.4+) 另一个有用的容器是枚举对象...,它属于enum模块,存在于Python 3.4以上版本中(同时作为一个独立的PyPI包enum34供老版本使用)。

    59410

    Docker容器化部署Python应用

    本文将使用Flask开发一个简单的Python web应用程序,并为“容器化”做好准备。然后创建一个Docker映像,并将其部署到测试和生产环境中。...这是通过将应用程序隔离在单独的容器中来实现的,这些应用程序虽然被容器分隔开,但是却可以共享操作系统和其他资源。...4.创建Python应用 Flask是Python的一个轻量级Web应用框架,简单易用,可以很快速地创建web应用。我们用它来创建此demo应用。...调试模式运行 根据前面讲到的容器化的优点,开发的应用程序通过容器部署,这从一开始就确保了应用程序构建的环境是干净的,从而消除了交付过程中的意外情况。...显式指定名称可以帮助我们定位容器(用来停止等操作); -v 选项将主机的app目录挂载到容器; -p 选项将容器的端口映射到主机。

    2.6K21
    领券
    首页
    学习
    活动
    专区
    圈层
    工具
    MCP广场