python标准库学习(1):collections

【Python】 Collections Deque ,通常被称作“双端队列”(double-ended queue),是Python标准库中 模块提供的一个高性能数据结构。它不仅仅是普通队列的实现,其独特之处在于能够高效地在队列的两端(头部和尾部)进行元素的添加和删除操作。相较于Python内置的 类型, 在处理队列和栈这类需要频繁在两端操作的场景时,展现出卓越的性能优势。 在头部进行插入 () 或删除 () 时,由于需要移动后续所有元素,其时间复杂度为 (O(n)),这在处理大量数据时会导致显著的性能瓶颈。而 的设计目标正是为了解决这一痛点,使得在两 阅读详情
python标准库学习(1)

标准库collections

2019-08-07

标准库collections为python在列表(list), 元组(tuple), 字典(dict)等基础上,增加了几种数据类型,这些类型可以视作是对原有的几种数据类型的扩展:

数据类型作用
namedtuple可以用属性名称来访问的元组
deque双向(前后)队列
Counter可以用属性名称来访问的元组
OrderedDict有序字典
defaultdict有默认值的字典
ChainMap将多个字典合并在一个映射中

除以上这些数据类型以外,还有UserDict、UserList、UserString三个抽象基类,涉及这部分的暂不讨论。

1 collections.namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

namedtuple,可以称为具名元组或命名元组,是对元组(tuple)的继承和扩展,被称为是一个“工厂函数”(factory function)。一般而言,元组中的元素(item)只能通过索引(index)进行访问,例如:

a_tuple = ('a', 'b', 'c', 2, 3, 4)
s = a_tuple[-1]  # 结果是 4 

namedtuple扩展了另一种方式,使得元组中的元素可以通过名称(name)的方式访问到,这样做的好处是在利用元组储存数据时,每个元素的含义就很清楚,例如可以创建一个名为Staff的namedtuple:

from collections import namedtuple
 
Staff=namedtuple("Staff",['name','age','email'])

mars = Staff('Mars', 30, 'mars03@*****.com')
june = Staff('June', 27, 'june_hcs@*****.com')
june.email    #结果为'june_hcs@*****.com'

可以发现这与定义一个名为Staff的类,构造函数(constructor,__init__)中定义name等3个属性类似。 这也是其被称为工厂函数的一个原因。
namedtuple中封装了3个比较有用的函数:_make,_replace和_asdict。_make可以将普通的元组转为一个namedtuple:

# 将一个普通元组转为Staff
kar = ('Kar',31,'kcar@****.com')
kar_nmdtp = Staff._make(kar)    # Staff(name='Kar', age=31, email='kcar@****.com')

_replace允许使用属性名(name)来替换元组中的值:

kar = Staff('Kar',31,'kcar@****.com')
kar_new = kar._replace(email='kar03@****.com')  # 注意,kar这个元组中email的值不会被修改

_asdict会将一个namedtuple转为一个OrderedDict对象:

kar = Staff('Kar',31,'kcar@****.com')
kar._asdict()   # OrderedDict([('name', 'Kar'), ('age', 31), ('email', 'kcar@****.com')])
2 collections.deque([iterable[, maxlen]])

deque是双边队列(double-ended queue)的缩写,参数maxlen指定了这个列表最大的长度。
既然称为“双边队列”,那么对应地,列表的插入、抛出等操作就可以扩展至两边,即增加一组带有left的操作:

from collections import deque

dlst = deque(['a','b','c','d','e','f','g'])
dlst.append('h')              # deque(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
dlst.appendleft('0')          # deque(['0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
dlst.pop()                    # deque(['0', 'a', 'b', 'c', 'd', 'e', 'f', 'g'])
dlst.popleft()                # deque(['a', 'b', 'c', 'd', 'e', 'f', 'g'])
dlst.extend(['h','i'])        # deque(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'])
dlst.extendleft(['0','1'])    # deque(['1', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'])
dlst.rotate(2)                # deque(['h', 'i', '1', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g'])

最后一个rotate(n)方法的作用是,当n &gt; &gt; > 0时,将末尾n个元素移到开头,反之当n &lt; &lt; < 0 时则将头部的n个元素移至末尾。
参数maxlen可以用来指定列表最大长度,当达到这个最大长度时,超越长度的元素将被从列表中移除:

from collections import deque

dlst = deque(['a','b','c','d','e'], maxlen=8)
dlst.extend(i for i in 'hijklmn')    # deque(['e', 'h', 'i', 'j', 'k', 'l', 'm', 'n'])
3 collections.Counter([iterable-or-mapping])

Counter是一个带有计数功能的容器类,是字典(dict)的一个子类,对于可哈希对象,Counter统计元素的次数。下面这个例子会将字符串中每个字符出现的次数进行统计,返回一个字典

from collections import Counter

s_str = '''It was the best of times, \
it was the worst of times, \
it was the age of wisdom, \
it was the age of foolishness, \
it was the epoch of belief,\
it was the epoch of incredulity, \
it was the season of Light,it was the season of Darkness, \
it was the spring of hope, it was the winter of despair,\
we had everything before us,we had nothing before us, \
we were all going direct to Heaven, \
we were all going direct the other way--in short,\
the period was so far like the present period, \
that some of its noisiest authorities insisted on its being received,\
for good or for evil, in the superlative degree of comparison only.'''
# 这里先去掉字符串中的标点、空格,再统计字母出现的频数
s_str = s_str.replace(' ','').replace(',','').replace('.','').replace('-','')
r = Counter(s_str)
# Counter({'e': 69, 't': 48, 'o': 44, 'i': 44, 's': 42, 'a': 28, 
# 'h': 27, 'r': 27, 'n': 22, 'w': 21, 'f': 19, 'g': 13, 'd': 13,
#  'l': 11, 'p': 10, 'c': 7, 'b': 5, 'm': 5, 'u': 5, 'v': 5, 
#  'y': 4, 'k': 2, 'I': 1, 'L': 1, 'D': 1, 'H': 1})

Counter提供了一些很有用的函数,其中一个是most_common(n=None),用于统计出现频次最高的1个(默认)或几个(指定n)元素:

# 接上面的例子
r.most_common(2)    # [('e', 69), ('t', 48)],注意这是个列表,其中的元素是元组

elements()返回一个可迭代对象,将元素按照出现次数进行迭代:

v_str = 'Each thing, as far as it can by its own power, strives to persevere in its being' 
v_cnt = Counter(v_str.replace(' ','').replace(',',''))
sorted(v_cnt.elements())  # 返回一个列表,将v_str中元素按顺序迭代出现的次数

参考源代码可以发现,在定义Counter类时,还封装了__add__、__sub__、__iadd__、__isub__、__and__、__or__等几个特殊方法,使得Counter对象之间可以实现类似加减、并、交的计算(这里直接引用源代码中的示例):

# 对结果进行加减
Counter('abbb') + Counter('bcc')    # Counter({'b': 4, 'c': 2, 'a': 1})
Counter('abbbc') - Counter('bccd')  # Counter({'a': 1, 'b': 2})
c = Counter('abbbc')
c -= Counter('bccd')  # Counter({'b': 2, 'a': 1})
# 并、交运算
Counter('abbb') | Counter('bcc')  # Counter({'b': 3, 'c': 2, 'a': 1})
Counter('abbb') & Counter('bcc')  # Counter({'b': 1})
4 collections.OrderedDict(dict)

OrderedDict在定义字典的同时,维护了一个记录元素插入顺序的链表,使得字典成为有顺序的,正常迭代会遵循LIFO(先进后出)的顺序:

from collections import OrderedDict

a_odct = OrderedDict()
a_odct['a'] = 'a101'
a_odct['b'] = 'a102'
a_odct['c'] = 'a103'
for k, v in a_odct.items():
    print(k, ':', v)
    
# a : a101
# b : a102
# c : a103

因为OrderedDict中字典有了排序,因此可以像列表一样进行堆栈操作,利用popitem(last=True)可以实现:

a_odct = OrderedDict()
a_odct['a'] = 'a101'
a_odct['b'] = 'a102'
a_odct['c'] = 'a103'
a_odct['d'] = 'b101'

a_odct.popitem(last=False)   # ('a', 'a101')

popitem()在last参数默认为True,可以实现LIFO(先进后出,Last In First Out),设为False时,可以实现FIFO(先进先出, First Input First Output)。
另一个方法move_to_end(key, last=True),可以通过制定键将一个键值对移到头部或尾部,last默认参数为True,即将制定的元素移到尾部:

a_odct = OrderedDict()
a_odct['a'] = 'a101'
a_odct['b'] = 'a102'
a_odct['c'] = 'a103'
a_odct['d'] = 'b101'
a_odct.move_to_end('b')  # 原字典键变为 OrderedDict([('a', 'a101'), ('c', 'a103'), ('d', 'b101'), ('b', 'a102')])
5 collections.defaultdict([default_factory[, …]])

与namedtuple类似,defaultdict也是一个工厂函数,对于普通字典而言,当键不存在时,会发生KeyError:

from collections import defaultdict
a_dct = {'a':'a101', 'b':'a102','c':'a103', 'd':'b101'}
a_dct['r']   # KeyError: 'r'

对于不存在的键,可以通过get()方法设置默认值。defaultdict提供了另一种方式来解决KeyError的问题,即为字典设置默认值,当键不存在时返回一个默认的结果。
defaultdict是dict的一个子类,在初始化时需要提供一个类型或者不带参数的可调用函数作为参数,如果是一个函数,那么defaultdict字典的默认值将会是函数的返回值:

from collections import defaultdict

a_dft = defaultdict(int)
a_dft['a']  # 0,类似地,如果传入的参数是list,将会返回[]
from random import randint
from collections import defaultdict

a_dfd = defaultdict(lambda: randint(0, 100)) # 注意这里作为传入参数的匿名函数,没有参数
a_dfd['r'] = 23
a_dfd['s'] = 41
a_dfd['a']  # 会返回一个0和100之间的随机整数

以下这个统计次数的例子有助于更好理解defaultdict的作用,这也是其经常被与Counter做对比的原因。

cnt_lst = ['c','b','a','c','d','a','d','c','d','a']
# 这种方式会返回KeyError,因为字典中没有c这个键
cnt = {}
for cr in cnt_lst:
    cnt[cr] +=1
# 这种方式稍改进了上面的逻辑,增加了对键是否存在的判断
cnt = {}
for cr in cnt_lst:
    if cr not in cnt:
        cnt[cr] = 1
    else:
        cnt[cr] += 1
cnt
# 利用字典中setdefault方法也能实现,dict.setdefault(key, default=None)方法,如果key存在则返回值,如果不存在则设为默认值
cnt = {}
for cr in cnt_lst:
    cnt[cr] = cnt.setdefault(cr, 0) + 1
# 如果一开始就将cnt设为一个defaultdict,则可以很简单实现
cnt = defaultdict(int)
for cr in cnt_lst:
    cnt[cr] += 1
6 collections.ChainMap(*maps)

ChainMap可以称为“组合字典”,根据官方文档的介绍,“一个 ChainMap 类是为了将多个映射快速的链接到一起,这样它们就可以作为一个单元处理。它通常比创建一个新字典和多次调用 update() 要快很多。”
ChainMap可以接收任意多个字典并将这些字典“合”在一起,之所以用加引号的合(并)来说ChainMap的作用,是因为本质上它并没有把几个字典做合并,而是建立了一个映射关系,这样既不会改变原有字典的内容,又能比较迅速的实现合并操作:

from collections import ChainMap

a_dct = {'a':1, 'b':2}
b_dct = {'c':3, 'd':4}
c_dct = {'a':5, 'c':6}
r = ChainMap(a_dct, b_dct, c_dct)    # ChainMap({'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6})
print(r['b'])                        # 2
print(r['a'])                        # 1

最后一个r['a']的例子可以发现,在键(key)存在相同的情况时,ChainMap会从根据自己的顺序找到一个值。
下面来看改变所映射的字典会对构建的ChainMap产生什么影响:

from collections import ChainMap

a_dct = {'a':1, 'b':2}
b_dct = {'c':3, 'd':4}
c_dct = {'a':5, 'c':6}
r = ChainMap(a_dct, b_dct, c_dct)    # ChainMap({'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6})
r['s'] = 11                          # ChainMap({'a': 1, 'b': 2, 's': 11}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6}),此时a_dct将被改变成为{'a': 1, 'b': 2, 's': 11}
b_dct.pop('c')                       # ChainMap({'a': 1, 'b': 2, 's': 11}, {'d': 4}, {'a': 5, 'c': 6})
c_dct.update({'c':9})                # ChainMap({'a': 1, 'b': 2, 's': 11}, {'d': 4}, {'a': 5, 'c': 9})

可以发现,如果改变原字典,则ChainMap会相应发生变化;如果对ChainMap添加键值对,则这一组数据将被添加在ChainMap的第一个字典中,并会改变原有的字典数据。
ChainMap有3个方法:map、new_child(m=None)、parents。map返回“一个可以更新的映射列表。这个列表是按照第一次搜索到最后一次搜索的顺序组织的。它是仅有的存储状态,可以被修改。”

from collections import ChainMap

a_dct = {'a':1, 'b':2}
b_dct = {'c':3, 'd':4}
c_dct = {'a':5, 'c':6}
r = ChainMap(a_dct, b_dct, c_dct)    # ChainMap({'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6})
print(r.maps)                        # [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6}]
r.maps.append({'w':3})
print(r)                             # ChainMap({'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6}, {'w': 3})

new_child(m=None)则实现了“返回一个新的ChainMap类,包含了一个新映射(map),后面跟随当前实例的全部映射(map)。如果 m 被指定,它就成为不同新的实例,就是在所有映射前加上 m,如果没有指定,就加上一个空字典,这样的话一个 d.new_child()调用等价于 ChainMap({}, *d.maps)。这个方法用于创建子上下文,不改变任何父映射的值。”

from collections import ChainMap

a_dct = {'a':1, 'b':2}
b_dct = {'c':3, 'd':4}
c_dct = {'a':5, 'c':6}
r = ChainMap(a_dct, b_dct, c_dct)    # ChainMap({'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6})
s = r.new_child()                    # s将是ChainMap({}, {'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6}),r则不会发生改变
s['w'] = 12
print(s)                             # ChainMap({'w': 12}, {'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6})

如果参数m被指定,则它会被添加到ChainMap的最前面。

from collections import ChainMap

a_dct = {'a':1, 'b':2}
b_dct = {'c':3, 'd':4}
c_dct = {'a':5, 'c':6}
r = ChainMap(a_dct, b_dct, c_dct)    # ChainMap({'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6})
s = r.new_child(c_dct)               # ChainMap({'a': 5, 'c': 6}, {'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6}),r则不会发生改变

parents“属性返回一个新的 ChainMap包含所有的当前实例的映射,除了第一个。这样可以在搜索的时候跳过第一个映射。 ”

from collections import ChainMap

a_dct = {'a':1, 'b':2}
b_dct = {'c':3, 'd':4}
c_dct = {'a':5, 'c':6}
r = ChainMap(a_dct, b_dct, c_dct)    # ChainMap({'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'a': 5, 'c': 6})
s = r.parents                        # s将成为ChainMap({'c': 3, 'd': 4}, {'a': 5, 'c': 6}),r则不会发生改变
v = r.parents.parents                # v将变成ChainMap({'a': 5, 'c': 6}), r和s不会发生变化
Python标准库之collections.Counter collections模块Counter 统计关键字计数初始化方式In [3]: collections.Counter(['a','b','b','c','c','c']) Out[3]: Counter({'c': 3, 'b': 2, 'a': 1})In [4]: collections.Counter('abbccc') Out[4]: Counter({'c': 3, 'b': 2, ' 阅读详情

相关推荐

MacOS蓝牙连接疑难杂症:从基础排查到高级修复全攻略

本文提供了一份全面的MacOS蓝牙故障排查与修复指南。从基础的菜单栏检查、终端命令诊断,到软/硬重启蓝牙服务、删除配置文件,再到使用blueutil工具、重置NVRAM等高级方法,系统性地解决了蓝牙无法连接、连接不稳定等常见问题。最后还分享了环境干扰排查、预防措施及硬件故障自检方法,帮助用户彻底解决Mac蓝牙连接难题。

weixin_29271263的博客 450

pyspark.sql之实现collect_list的排序

简述 通过利用pyspark.sql.Window实现collect_list的排序 示例 有如下数据 df.show() +----+-------+-----+ |name|subject|score| +----+-------+-----+ |李明| 语文| 82| |李明| 数学| 90| |李明| 英语| 75| |陈凯| 语文| 71| |陈凯| 数学| 83| |陈凯| 英语| 66| |王莉| 语文| 85| |王莉| 数学|

jay_1979的博客 2185

Godot 2D游戏开发实战:用GDScript复刻10款经典小游戏(附完整源码)

本文是一份Godot 2D游戏开发实战指南,通过使用GDScript语言复刻10款经典小游戏,帮助开发者快速掌握引擎核心功能。内容涵盖从环境配置、GDScript基础到贪吃蛇、Flappy Bird、打砖块、俄罗斯方块等项目的核心逻辑与代码实现,并附有完整源码,旨在通过实践提升独立开发能力。

gold的博客 778

js将数组中相同的元素进行分组 必看

function sortClass(sortData){ const groupBy = (array, f) => { let groups = {}; array.forEach((o) => { let group = JSON.stringify(f(o)); groups[group] = groups[group] || []; groups[group].push(o); }); return Object.

web全栈开发的博客 4586

模型优化系列——模型剪枝/量化概述

模型优化目的:通过减少模型大小,提高推理速度等使模型成功部署在各个硬件中并实时有效运作。

qq_61210574的博客 1293

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

【hive】列转行—collect_set()/collect_list()/concat_ws()函数的使用场景

【hive】列转行—collect_set()/collect_list()/concat_ws()函数的使用场景

sodaloveer的博客 2万+

【AI智能体】图像处理-生成营销 Banner 图

生成营销 Banner 图是一款用于制作营销图片的智能体,它可以根据指定的营销活动内容,快速生成活动 Banner 图片,降低活动运营成本、提高制图效率。

AI创变工坊,和1000万新个体创业者一起成长!愿大家都能跟上时代的洪流,不被社会淘汰,愿大家的生活工作收入都能具备竞争力! 1175

python列表添加字符串_python-如何在数据框的一列中添加字符串并...

您可以使用pyspark.sql.Window来实现此目的,该命令按clientDateTime,pyspark.sql.functions.concat_ws和pyspark.sql.functions.collect_list的顺序排序:import pyspark.sql.functions as ffrom pyspark.sql import Windoww = Window.order...

weixin_39735509的博客 715

Win11内核隔离无法打开的解决方案详解

内核隔离问题的解决需遵循"先硬件后软件"的排查原则,90%以上的案例可通过驱动清理或外设断开解决。对于必须禁用该功能的用户,建议定期使用Windows Defender进行全盘扫描,并保持系统更新至最新版本。技术决策需在安全性和兼容性之间取得平衡,本文提供的多维解决方案可帮助用户构建更稳定的Windows 11使用环境。

mmoo_python的博客 4829

Python 基础—— collections 模块

import collectionsdefaultdictfrom collections import defaultdict # 颇有一些模板类的感觉

4459

芒果YOLOv7改进48:主干篇:独家首发改进:目标检测新范式骨干PPHGNetv2改进版,充分融合信息特征,提升YOLOv7检测能力

YOLOv7代码改进实践 | 独家首发改进 PPHGNetv2 改进版结构

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1849

30天Python学习路径:从基础语法到项目实战

Python作为一门易学易用的编程语言,其核心优势在于丰富的标准库和清晰的语法结构。从变量定义到面向对象编程,Python的动态类型系统和内置数据结构为开发者提供了高效的开发体验。在实际工程中,合理运用列表推导式、装饰器等Pythonic特性可以显著提升代码质量。本文以30天为周期,系统性地规划了从基础语法、函数式编程到Web爬虫等实战项目的学习路径,特别适合希望快速掌握Python核心技能的开发者。学习过程中结合Jupyter Notebook交互环境和PEP8规范,能够帮助初学者建立良好的编码习惯。

weixin_42524276的博客 163

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【备战蓝桥杯】探索Python内置标准库collections的使用

Python内置标准库collections的使用

“路漫漫其修远兮,吾将上下求索。” 1716

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python-标准库collections的使用

保留最后N个元素 在迭代操作或者其他操作的时候,怎么样只保留最后有限几个元素的历史记录?保留有限历史记录正式collections.deque大显身手的时候了,下面简单介绍一下collections.deque的使用: from collections import deque d = deque([1,2,3], maxlen=3) d.append(4) print d #====...

奔跑的豆子的专栏 4818

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Python标准库之 collections模块

模块是Python标准库中一个功能强大且用途广泛的组件,主要用于处理和操作各种数据集合类型,为开发者提供了比Python内置数据类型更丰富、更高效的功能。

摆烂的人生,摆烂的博主 1031

【标准库】collections的OrderedDict和Counter

上次提到了标准库collections中两个C语言实现的容器,由于本人对C语言并不算熟悉,因此无法解析源码,今天解析OrderedDict和Counter,当然它们也有C实现;这是一个链表,__slots__是类中的一个特殊属性,它应该是一个元组,如果一个类设置了该属性,那么这个类的实例只允许拥有元组中的实例属性便于我们更好地理解发生了什么,我们可以观察以下代码的输出:1、__module__,当前的对象属于哪个模块,很显然就在当前的模块,也就是__main__;

Python3学习 930

Python标准库--collections模块(1)

这里写自定义目录标题collections模块简介namedtuple() 命名元组的工厂函数功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 collections模块简介 collections是Python标准库里有关数据类型

Python_Harry的博客 631

Python标准库中collections介绍

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

YYHao 1971

Python标准库collections模块

Python中最常用的几种数据结构是list、tuple、dict、 set,但是当我们处理一些特定数据结构场景时就显得有些不方便或者效率低,不过Python丰富的类库已经帮我们解决了这个问题,今天要提到的就是collections库,该库里包含了许多非常有用的集合方法,熟练掌握这些方法可以让我们平时写代码时更加Pythonic而不是绞尽脑汁把简单的代码复杂化。 先来看看几个非常有用的collec...

Anders's Blog 868

python标准库:collections和heapq模块

http://blog.csdn.net/pipisorry/article/details/46947833 python额外的数据类型。collections模块和heapq模块的主要内容。 集合库collection collections模块介绍 Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置...

皮皮blog 5348

python 标准库之 collections 模块详解

collections 模块实现了专门的容器数据类型提供 Python通用内置容器的替代品,dict、list、set、tupleOrderedDict是dict的子类,和字典的操作完全相同 区别在于OrderedDict的Key会按照插入的顺序排列(不过从python3.6开始,dict的插入变为有序,即字典整体变的有序;) namedtuple 返回一个具有命名字段的元组的新子类,可以用来构建一个只有少数属性,但没有方法的类对象 Counter 是dict的子类,同样具有dict相同的操作 以字典的形式

qq_42006301的博客 924

python标准库:collections

collections.deque deque是双端队列(double-ended queue)的缩写,由于两端都能编辑,deque既可以用来实现栈(stack)也可以用来实现队列(queue)。 1.创建deque序列: from collections import deque d=deque() 2.append(往右边添加一个元素) appendleft(往左边添加一个元素) d=deq...

syqnyue的博客 607

【Python 标准库学习】容器数据类型库 — collections

欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/ collections 模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择。 collections 模块官方文档:https://docs.python.org/3/library/collectio...

BOB'S BLOG 1763

python中collections_python标准库之collections介绍

collections----容器数据类型collections模块包含了除list、dict、和tuple之外的容器数据类型,如counter、defaultdict、deque、namedtuple、orderdict,下面将一一介绍。Counter初始化:Counter 支持三种形式的初始化。它的构造函数可以调用序列,一个字典包含密钥和计数,或使用关键字参数映射的字符串名称。importco...

weixin_39783915的博客 269
下一篇: python标准库学习(2):time、datetime和calendar
Bingtuu
博客等级 码龄10年 3粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值