加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

四种高机能数据范例,Python collections助你优化代码、简捷使命

发布时间:2019-11-05 20:42:00 所属栏目:移动互联 来源:机器之心编译
导读:在这篇文章中,呆板进修工程师 George Seif 先容了 Python collections 模块很是受接待的四种数据范例以及它们各自的行使要领。这些数据范例可以对代码举办优化,进而实现更简捷的使命执行。 Python 的最大上风之一就是它有各类百般的模块和软件包可供选择
副问题[/!--empirenews.page--]

在这篇文章中,呆板进修工程师 George Seif 先容了 Python collections 模块很是受接待的四种数据范例以及它们各自的行使要领。这些数据范例可以对代码举办优化,进而实现更简捷的使命执行。
Python 的最大上风之一就是它有各类百般的模块和软件包可供选择。这些模块和包将 Python 的成果扩展到了很多风行规模,包罗呆板进修、数据科学、Web 开拓和前端等。个中示意最好的一个就是 Python 内置的 collections 模块了。

一样平常而言,Python 中的 collections 模块是用于存储列表、字典、元组以及集等数据荟萃的容器。这些容器嵌入在 Python 中,可以实现开箱即用。collections 模块提供了特另外高机能数据范例,它们可以优化代码,让一些使命变得越发简捷。

四种高性能数据类型,Python collections助你优化代码、简洁任务

本文作者 George Seif(呆板进修工程师)。

Counter

官方文档:https://docs.python.org/2/library/collections.html#collections.Counter

Counter 是 dictionary 工具的子类。collections 模块中的 Counter() 函数会吸取一个诸如 list 或 tuple 的迭代器,然后返回一个 Counter dictionary。这个 dictionary 的键是该迭代器中的独一元素,每个键的值是迭代器元素的计数。

起首,我们必要从 collections 包中导入 Counter:

  1. from collections import Counter  

假如要建设一个 Counter 工具,我们也要像看待其他工具类一样,先将它分派给一个变量,而转达给 Counter 工具的惟一变量等于迭代器。

  1. lst = [1, 2, 3, 3, 2, 1, 1, 1, 2, 2, 3, 1, 2, 1, 1] 
  2.  
  3. counter = Counter(lst) 

假如我们行使简朴的 print 函数(print(counter))把这个 Counter 打印出来,则会获得一些与 dictionary 轻微相同的输出:

  1. Counter({1: 7, 2: 5, 3: 3}) 

你可以用这些键值会见任何 Counter 项。这与从尺度的 Python dictionary 中获取元素的要领完全沟通。

  1. lst = [1, 2, 3, 3, 2, 1, 1, 1, 2, 2, 3, 1, 2, 1, 1] 
  2.  
  3. counter = Counter(lst) 
  4.  
  5. print(counter[1]) 
  6.  
  7. most_common() 函数 

今朝来说,Counter 工具中最有效的函数是 most_common()。当它应用于一个 Counter 工具时,会返回一个 list,这个 list 包括了前 N 个常见的元素及其计数,它们凭证常见度降序分列。

  1. lst = [1, 2, 3, 3, 2, 1, 1, 1, 2, 2, 3, 1, 2, 1, 1] 
  2.  
  3. counter = Counter(lst) 
  4.  
  5. print(counter.most_common(2)) 

上述代码会打印出以下 tuples 的 list。

  1. [(1, 7), (2, 5)] 

每个 tuple 的首个元素是 list 中的独一项,第二个元素是计数值。对付「获取 list 中前 3 常见的元素及其计数」这样的题目,这会是一种快速且简朴的要领。

假如要相识更多关于 Counter 的成果,可以查察官方文档。

defaultdict

官方文档:https://docs.python.org/2/library/collections.html#collections.defaultdict

defaultdict 的事变方法和泛泛的 python dictionary 完全沟通,只是当你试图会见一个不存在的键时,它不会报错,而是会行使默认值初始化这个键。默认值是按照在建设 defaultdict 工具时作为参数输入的数据范例自动配置的。下面的代码就是一个例子。

相反,它会行使默认值初始化这个键。默认值是按照在建设 defaultdict 工具时作为参数输入的数据范例自动配置的。下面的代码就是一个例子。

  1. from collections import defaultdict 
  2.  
  3. names_dict = defaultdict(int) 
  4.  
  5. names_dict["Bob"] = 1 
  6.  
  7. names_dict["Katie"] = 2 
  8.  
  9. sara_number = names_dict["Sara"] 
  10.  
  11. print(names_dict) 

在上面的示例中,转达给 defaultdict 工具的默认值是 int。然后每个键获得了一个值,也就是「Bob」和「Katie」各得到了一个数字。可是在最后一行,我们试着会见了一个尚未界说的键,即「Sara」。

在平凡 dictionary 中,这种操纵会报错。可是行使 defaultdict 时,将自动为「Sara」初始化一个新键,其值 0 对应于我们的 int 数据范例。因此,最后一行可以把这「Bob」、「Katie」和「Sara」以及对应的值都打印出来。

  1. defaultdict(<class 'int'>, {'Bob': 1, 'Katie': 2, 'Sara': 0}) 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读