当前位置: 首页 > news >正文

佛山市网站建设 乾图信息科技外贸网站每天多少ip

佛山市网站建设 乾图信息科技,外贸网站每天多少ip,广西壮族自治区市场监督管理局官网,php企业网站管理系统Python 的扩展数据类型是对内置数据类型的增强,旨在解决特定需求,提供更高级的功能。我们来看一些常见的扩展数据类型及其原理、用途,并通过示例逐步讲解。 1. collections.namedtuple namedtuple 是增强的元组,允许用名称访问元…

Python 的扩展数据类型是对内置数据类型的增强,旨在解决特定需求,提供更高级的功能。我们来看一些常见的扩展数据类型及其原理、用途,并通过示例逐步讲解。

1. collections.namedtuple

namedtuple 是增强的元组,允许用名称访问元素,增加代码可读性。

原理:它扩展了普通元组,通过名称而不是索引来访问元素。内部实际上还是使用元组存储数据,但通过动态生成类的方式增加了属性名。

场景:适合用于结构化数据存储,如数据库查询结果、坐标、RGB颜色值等。

示例

from collections import namedtuple# 定义一个名称为Point的 namedtuple
Point = namedtuple('Point', ['x', 'y'])p1 = Point(10, 20)
print(p1.x)  # 10
print(p1.y)  # 20

相比普通元组,它的可读性和易维护性都增强了:

p = (10, 20)  # 普通元组
print(p[0])   # 10, 使用索引访问,不直观

2. collections.defaultdict

defaultdict 是字典的扩展,可以指定一个默认工厂函数,当访问不存在的键时,会自动生成值。

原理:通过 __missing__() 方法处理缺失的键,调用默认工厂函数生成值。默认工厂函数可以是 intlist 等。

场景:适用于需要频繁初始化新键的场景,如统计、聚合等。

示例

from collections import defaultdict# 默认工厂函数为 list,初始化新键时返回空列表
dd = defaultdict(list)
dd['fruits'].append('apple')
print(dd)  # {'fruits': ['apple']}

如果使用普通字典会抛出 KeyError:

d = {}
# d['fruits'].append('apple')  # 抛出KeyError

3. collections.Counter

Counter 是用于计数的字典子类,适合用于频率统计。

原理:内部通过字典实现键值对,值表示元素出现的次数。

场景:适合统计元素频次,如统计单词、字符、事件等。

示例

from collections import Counterwords = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_count = Counter(words)
print(word_count)  # Counter({'apple': 3, 'banana': 2, 'orange': 1})

你可以直接用 Counter 对字符串进行统计:

text = "hello world"
char_count = Counter(text)
print(char_count)  # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

4. collections.deque

deque 是双向队列,支持从两端高效插入和删除。

原理:内部使用双向链表实现,比普通列表 list 在两端插入删除更快。

场景:适用于队列、栈等需要快速操作两端的场景。

示例

from collections import dequedq = deque([1, 2, 3])
dq.append(4)  # 在右边添加
dq.appendleft(0)  # 在左边添加
print(dq)  # deque([0, 1, 2, 3, 4])

list 比较:

lst = [1, 2, 3]
lst.insert(0, 0)  # 左边插入操作效率较低,deque 更优

5. collections.OrderedDict

OrderedDict 是保留插入顺序的字典子类。

原理:普通字典在 Python 3.7+ 版本中已经默认保持插入顺序,但 OrderedDict 在老版本中也提供了这种功能,并增加了 move_to_end 等方法。

场景:需要保证键值对插入顺序的场景,如处理 LRU 缓存等。

示例

from collections import OrderedDictod = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
print(od)  # OrderedDict([('a', 1), ('b', 2), ('c', 3)])

6. collections.ChainMap

ChainMap 用于将多个字典组合成一个视图。

原理:它不会复制字典,而是动态构建一个视图,从多个字典中查找键。

场景:适用于需要在多个上下文(如局部和全局)中查找变量的场景。

示例

from collections import ChainMapdict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
chain = ChainMap(dict1, dict2)
print(chain['b'])  # 2, 优先返回第一个字典中的值

7. enum.Enum

Enum 是枚举类型,允许定义一组常量,并使用名称来引用它们。

原理:枚举类通过 enum 模块实现,赋予一组有意义的常量名称,增强代码的可读性。

场景:适合定义一组固定的常量值,如颜色、状态、方向等。

示例

from enum import Enumclass Color(Enum):RED = 1GREEN = 2BLUE = 3print(Color.RED)  # Color.RED
print(Color.RED.value)  # 1

总结

数据类型原理适用场景示例
namedtuple具名元组,使用名称访问结构化数据存储Point = namedtuple('Point', ['x', 'y'])
defaultdict自动初始化键值需要初始化键的字典操作dd = defaultdict(list)
Counter计数器统计频次word_count = Counter(words)
deque双向队列,快速插入删除栈、队列实现dq = deque([1, 2, 3])
OrderedDict保留插入顺序的字典LRU 缓存实现od = OrderedDict()
ChainMap多个字典的视图变量上下文查找chain = ChainMap(dict1, dict2)
Enum枚举类型,定义常量常量定义,如颜色、状态等Color.RED

这些扩展类型在处理特定问题时极为有用,它们可以提高代码的可读性、效率,并减少出错的可能。每个类型都为特定场景提供了优化方案,使代码更具表现力和清晰度。

http://www.yayakq.cn/news/917904/

相关文章:

  • 哪个网站专做进口商品的设计师常用的设计论坛
  • 一站式服务大厅如何做网站app
  • 芜湖市建设路小学网站广州seo网站优化培训
  • 深圳网站建设 信科网络主要的cms系统有哪些
  • 创建网站首页青岛城乡建设局网站首页
  • 在线做头像网站flash网页制作
  • destoon 手机网站模板html网页设计期末作业
  • 什么是无主体新增网站建筑施工建设网站
  • 长春网站建设厂家wordpress随机广告
  • 苏州网站开发公司兴田德润优惠吗做个人网站要注意什么
  • 珠海网站建设优化推广微信群二维码大全网站
  • 贵州城乡和建设厅网站如何选择家居网站建设
  • 企业网站优化链接wordpress 能做哪些
  • 企业网站建站程序互联网企业100强名单
  • 廊坊企业建站模板苏州公司注册流程
  • 深圳市住房和建设局官网站做直播的网站
  • 网络营销怎么做网站飞阳建设网站
  • 微信扫码下单小程序怎么做seo优化网站技术排名百度推广
  • 哪个网站做新中式保之友微网站怎么建
  • 甘肃省城乡与住房建设厅网站首页高端电子网站建设
  • 做网站公司怎么备案客户网站中国外发加工网app
  • 网站seo外链建设网站在线统计代码
  • 电子商务网站建设教材怎么做网站聊天视频直播
  • 咨询行业网站开发学设计用什么笔记本电脑好
  • 天津建立网站营销设计无做弊的棋牌游戏网站
  • 邢台建设企业网站费用wordpress 代替
  • 延吉网站开发网站后台修改图片集顺序
  • 惠州网站建设哪家好wordpress+左侧菜单
  • 建网站语言企业为什么要做网站建设
  • 湖南还没有建网站的企业网站关键词多少合适