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

佛山购物网站建设北京网络推广外包公司排行

佛山购物网站建设,北京网络推广外包公司排行,wordpress 学术 模板,西安今日疫情collections.Counter() 是 Python 中一个强大的工具,用于快速统计可迭代对象中元素的出现次数。它属于 collections 模块,返回一个类似字典的子类,键是元素,值是元素的计数。 1、collections.Counter()用法介绍 基本用法 导入并…

  collections.Counter() 是 Python 中一个强大的工具,用于快速统计可迭代对象中元素的出现次数。它属于 collections 模块,返回一个类似字典的子类,键是元素,值是元素的计数。

1、collections.Counter()用法介绍

基本用法

  1. 导入并创建 Counter 对象:
from collections import Counter# 通过列表、字符串等可迭代对象初始化
c = Counter(['a', 'b', 'a', 'c', 'b', 'a']) 
print(c)  # 输出: Counter({'a': 3, 'b': 2, 'c': 1})# 统计字符串中字符的出现次数
word_counter = Counter("abracadabra")
print(word_counter)  # 输出: Counter({'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1})
  1. 直接传递键值对或字典:
c = Counter(a=3, b=2)  # 等价于 Counter({'a':3, 'b':2})

常用方法

  • items()
    .items() 方法用于返回元素及其计数的键值对视图,类似于字典的 items()。返回值包含 (元素, 计数) 的元组。

示例:

from collections import Counter# 创建 Counter 实例
data = ["apple", "banana", "apple", "orange", "banana", "apple"]
counter = Counter(data)# 使用 .items() 获取键值对
items_view = counter.items()
print(items_view)
# 输出:dict_items([('apple', 3), ('banana', 2), ('orange', 1)])# 遍历键值对
for item, count in counter.items():print(f"{item}: {count}")
# 输出:
# apple: 3
# banana: 2
# orange: 1# 转换为列表或字典
items_list = list(counter.items())  # [('apple',3), ('banana',2), ('orange',1)]
items_dict = dict(counter.items())  # {'apple':3, 'banana':2, 'orange':1}

统计词频后处理数据:

text = "hello world hello python world"
word_counter = Counter(text.split())# 筛选出现次数大于1的单词
filtered = {word: count for word, count in word_counter.items() if count > 1}
print(filtered)  # {'hello': 2, 'world': 2}

按计数排序:

# 使用 sorted() 对计数排序(降序)
sorted_items = sorted(counter.items(), key=lambda x: -x[1])
print(sorted_items)  # [('apple',3), ('banana',2), ('orange',1)]
  • elements():
    返回一个迭代器,元素按出现次数重复。
for element in c.elements():print(element)  # 输出: a a a b b c
  • most_common(n):
    返回前 n 个最常见元素及其计数。
print(c.most_common(2))  # 输出: [('a', 3), ('b', 2)]
  • update():
    合并其他 Counter 或可迭代对象的计数。
c.update(['a', 'd'])  # c['a'] 变为 4, c['d'] 变为 1
  • subtract():
    减少计数(允许负数)。
c.subtract({'a': 2})  # c['a'] 变为 2

数学运算
加减操作:

c1 = Counter(a=3, b=1)
c2 = Counter(a=1, b=2)# 加法
print(c1 + c2)  # Counter({'a': 4, 'b': 3})# 减法(仅保留正数计数)
print(c1 - c2)  # Counter({'a': 2})

其他特性
访问不存在的元素返回 0(而非 KeyError):

print(c['z'])  # 输出: 0

转换为字典:

dict(c)  # 转为普通字典:{'a':3, 'b':2, 'c':1}

应用场景
统计词频:

text = "apple banana orange apple apple banana"
words = text.split()
word_counts = Counter(words)
print(word_counts.most_common(1))  # 输出: [('apple', 3)]

数据分析:

data = [1, 2, 2, 3, 3, 3]
num_counts = Counter(data)
print(num_counts)  # 输出: Counter({3: 3, 2: 2, 1: 1})

快速计数替代手动循环。

注意事项

  • 键必须是可哈希类型(如字符串、数字)。
  • 计数可以为 0 或负数(但 most_common() 会忽略非正数)。

使用 Counter 可以大幅简化统计代码,提升效率。

2、使用实例

  以一道题目为例:


给你一个整数数组 nums 。
如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
返回好数对的数目。

示例 1:
输入:nums = [1,2,3,1,1,3]
输出:4
解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始


  题目可以通过统计所有数字出现的次数n,该数值产生的对数为 C n 2 = n ∗ ( n – 1 ) / / 2 C_n^2 = n * (n – 1) // 2 Cn2=n(n–1)//2

  1. 解法一

一般想到可以用集合来存放列表中的值,因为集合中的元素是独一无二的,然后对每个数字统计它在列表中出现的次数并累加该数字可产生的对数即可:

    def numIdenticalPairs(nums):nums_set = set(nums)c = 0for each in nums_set:n = nums.count(each)c += n*(n-1)//2return c
  1. 解法二

经过上面的理论学习,发现可以用collections.Counter()来提高效率:

def numIdenticalPairs(nums):m = collections.Counter(nums)return sum(v * (v - 1) // 2 for k, v in m.items())
http://www.dtcms.com/wzjs/30869.html

相关文章:

  • 网页案例图片seo百度贴吧
  • 网站打不开是什么原因色盲和色弱的区别
  • 搭建一个影视网站搜索营销
  • 网站建设素材百度 官网
  • 内部网页制作宁波企业seo推广
  • 建设网站有何要求网站管理工具
  • 开通公司网站怎么做分录百度推广关键词多少合适
  • 旅游网站平台建设方案策划书网站优化推广seo公司
  • 做外贸是网站好还是展会好如何优化网络速度
  • 外贸网站如何做推广国际军事新闻最新消息
  • 公司让做网站违法小说推广关键词怎么弄
  • 廊坊建站软件seo实战培训视频
  • 廊坊做网站优化万网官网
  • 没有网站如何做落地页成都网站推广哪家专业
  • 网站设计谈判软文营销的五大注意事项
  • 莆田网站建设方案报价宁波网络营销有哪些
  • 青岛网站设计建设国际新闻热点事件
  • 如何提交网站连接到百度小红书推广渠道
  • 怎么在拼多多开网店青岛推广优化
  • 禅城区企业网站建设新网站推广方法
  • 中国变装网站教你如何做女人网站管理与维护
  • qq炫舞做字网站软文发布平台排名
  • 大岭山营销型网站建设吸引人的微信软文范例
  • 冠县哪做网站网络营销活动推广方式
  • javaweb网站开发流程网络营销推广计划
  • 河北省网站建设公司廊坊seo网络推广
  • 制作动态网站第一步综合查询
  • 贸易公司做网站怎么样最近的新闻大事20条
  • 推荐西安优秀的响应式网站建设公司东营网站建设哪家更好
  • java做网站怎么验证登录鞋子软文推广300字