python 的collections模块详解

简介: 想让自己的python代码更加Pythonic吗,我就来带大家研究研究collections模块在流程的python这本书中,有一点点的叙述,但是想更加深入的去了解,那就得自己查资料了,我也顺便把自己整理的分享出来.

想让自己的python代码更加Pythonic吗,我就来带大家研究研究collections模块

在流程的python这本书中,有一点点的叙述,但是想更加深入的去了解,那就得自己查资料了,我也顺便把自己整理的分享出来.


一.namedtuple

可命名元组,给元组每个元素起一个名字,这样就可以通过名字来访问元组里的元素,增强了可读性

下面是一个纸牌的例子:

from collections import *
Card = namedtuple('Card', ['rank', 'suit'])
class FrenchDeck:
    ranks = [str(n) for n in range(2, 11)] + list('JDKA')
    suits = 'spades diamonds clubs heaerts'.split()
    def __init__(self):
        # ranks = [str(n) for n in range(2, 11)] + list('JDKA')
        # suits = 'spades diamonds clubs heaerts'.split()
        self._cards = [Card(rank, suit) for rank in ranks
                       for suit in suits]
    def __len__(self):
        return len(self._cards)
    def __getitem__(self, position):
        return self._cards[position]
if __name__ == '__main__':
    deck = Card('7', 'diamonds')
    deck1 = FrenchDeck()
    print(deck1.__len__())
    print(deck1.__getitem__(24))
    print(deck1[0])
    print(deck1[1:9])

在namedtuple的这个例子中用到了__getitem__方法,可自行查找,这个是很好理解的。

这里面的有些部分对新手来说不好理解,我就再啰嗦一点,

在这里面有个遍历的过程,大概就是这样,运行一下下面的代码就懂了

a = [(r, s) for r in range(1, 4)
     for s in range(2, 8)]
print(a)


相关文章
|
8天前
|
XML 数据格式 Python
Python的`import`用于加载模块,基础形式是`import module`,全量导入
【6月更文挑战第23天】Python的`import`用于加载模块,基础形式是`import module`,全量导入;`from module import name`选择性导入部分,减少命名空间污染;`from module import *`导入所有(不推荐),易引发冲突。别名导入如`from math import sqrt as square_root`可避免冲突。包导入用`.`,如`import xml.etree.ElementTree as ET`。
30 8
|
8天前
|
XML 数据格式 Python
在Python中,导入其他模块是通过使用import语句完成的
在Python中导入模块涉及`import`语句的不同用法:1) `import math`导入整个标准库;2) `from math import sqrt`导入单个函数;3) `import numpy as np`使用别名;4) `from random import *`导入所有(不推荐);5) `import xml.etree.ElementTree as ET`导入子模块;6) 使用`importlib.import_module()`延迟导入;7) `from .module import func`导入相对路径模块,需管理`sys.path`。
27 6
|
5天前
|
Python
python--os模块
python--os模块
10 2
|
5天前
|
Python
python-time模块
python-time模块
8 1
|
7天前
|
算法 数据安全/隐私保护 开发者
Python logger模块详细讲解
Python logger模块详细讲解
14 3
|
8天前
|
Python
Python的`os`模块核心功能概述:通过`os.getcwd()`获取
【6月更文挑战第23天】Python的`os`模块核心功能概述:通过`os.getcwd()`获取、`os.chdir()`改变工作目录;使用`os.mkdir()`, `os.makedirs()`创建目录,`os.rmdir()`, `os.removedirs()`删除;`os.rename()`, `os.renames()`重命名文件或目录;`os.remove()`删除文件;`os.listdir()`列出目录内容;`os.path.exists()`, `os.path.isfile()`, `os.path.isdir()`检查路径;`os.stat()`获取文件属性。
20 4
|
8天前
|
XML 数据格式 Python
Python模块导入包括:`import math`导入标准库
【6月更文挑战第23天】Python模块导入包括:`import math`导入标准库,`from math import sqrt`导入单个函数,`import numpy as np`给模块取别名,`from random import *`导入所有(不推荐),`import xml.etree.ElementTree as ET`导入子模块,`import_module('pandas')`按需导入,和使用相对路径如`from .module import func`处理项目结构。记得调整`sys.path`以包含自定义模块路径。
20 4
|
6天前
|
Linux Python
Python- jinja2模块详解
Python- jinja2模块详解
10 1
|
12天前
|
JSON Java API
Python教程:一文了解Python requests模块
Python 中的 requests 模块是一个简洁而强大的 HTTP 库,用于向 Web 服务器发送 HTTP 请求和处理响应。它让开发者能够更轻松地与网络资源进行交互,包括发送 GET、POST、PUT、DELETE 等类型的请求,并处理返回的数据。
48 6
|
12天前
|
Python
Python中的模块对象__package__
【6月更文挑战第13天】
15 5