首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 工匠:容器门道

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

51520

Python 工匠:容器门道

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

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

    Python容器 collections

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

    77830

    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() – 将其它类型容器转换为集合容器

    49320

    Python 排序容器

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

    46120

    Python数据容器:字典

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

    10121

    Python数据容器:集合

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

    8031

    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

    15221

    Python 内建容器类型

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

    1.2K10

    python容器序列类型collections

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

    85720

    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)复杂度双向添加和弹出元素以及扩展

    76520

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

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

    77420

    使用 eBPF 调试 Python 容器

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

    71820

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

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

    22921

    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

    1.9K10

    Python学习笔记之容器(Collections)

    容器(Collections) Python附带一个模块,它包含许多容器数据类型,名字叫作collections。我们将讨论它作用和用法。...d = deque() 它用法就像pythonlist,并且提供了类似的方法,例如: 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供老版本使用)。

    54310

    Docker容器化部署Python应用

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

    2.4K21

    Docker 容器化部署 Python 应用

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

    3.2K31
    领券