python基础之enumerate() 函数+ Counter类计数器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python基础之enumerate() 函数+ Counter类计数器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3049字,纯文字阅读大概需要5分钟。
内容图文
![python基础之enumerate() 函数+ Counter类计数器](/upload/InfoBanner/zyjiaocheng/615/ee41d84709d5409e9bdee25ac204e59b.jpg)
enumerate() 函数
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据下标和数据,一般与 for 循环一起使用 ? 语法:enumerate(sequence, [start=0])- sequence -- 一个序列、迭代器或其他支持迭代对象(字符串、列表、元组、字典)。
- start -- 下标起始位置。
例子1
seasons = ['Spring', 'Summer', 'Fall', 'Winter'] test_1 = enumerate(seasons) print(type(test_1))
结果:<class 'enumerate'>
print(test_1)
结果:<enumerate object at 0x109ce2ee8>
print(list(test_1)) # 使用list转为列表形式数据,默认的下标从0开始的
结果:[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
test_2 = enumerate(seasons, start=1) # 默认下标从1开始 print(list(test_2)) 结果:[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
例子2
结合for循环使用seasons = ['Spring', 'Summer', 'Fall', 'Winter'] for i, j in enumerate(seasons): print(i, j) 结果 0 Spring 1 Summer 2 Fall 3 Winter 也就是 i代表下标,j代表元素如果使用普通的for循环要达到上面的效果
seasons = ['Spring', 'Summer', 'Fall', 'Winter'] for i in range(len(seasons)): print(i, seasons[i]) 或者 i = 0 for j in seasons: print(i, j) i += 1
collections.Counter
Counter类是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。
例子
from collections import Counter temp = "abccbancaabwn" test = Counter(temp) print(test) # 查看各个元素的出现次数统计 结果:Counter({'a': 4, 'b': 3, 'c': 3, 'n': 2, 'w': 1}) print(test["a"]) # 查看某个元素的出现次数 结果:4
print(test["f"]) # 不存在的元素,出现次数为0 结果:0 # most_common(n)统计出现次数前n位的元素 print(test.most_common(2)) # 返回出现频率前n的数据(例如n=2,返回出现频率排名靠前的2个) 结果:[('a', 4), ('b', 3)]
enumerate() 函数和collections.Counter结合的实例
leetcode中题目1:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1 示例1: s = "leetcode" 返回 0 示例2: s = "loveleetcode" 返回 2 |
import collections
def method(s): """ :param s: :return: """ temp = collections.Counter(s) # 使用Counter类跟踪值出现的次数 for i, j in enumerate(s): # print(i, j) # 使用enumerate() 函数将数组组合为一个索引序列,i表示下标,j表示数据值 if temp[j] == 1: # 如果j元素出现的次数为1,表示这个元素在给出的字符串中只出现了1次 print("只出现1次的元素为:"+j) return i # 返回这个元素对应的下标 return -1 # 如果遍历完都没有找到只出现1次的元素,则返回-1
leetcode中题目2:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 |
import collections class Solution(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: int """ frequency = collections.Counter(nums) # 统计每个元素出现的次数 # print(frequency) for i in nums: # print(frequency[i]) if frequency[i] > len(nums) / 2: # 遍历数组,如果这个元素的出现次数超过总长度一半,则返回这个元素 return i if __name__ == '__main__': test = Solution() nums = [1, 2, 3, 2, 2, 2, 5, 4, 2] print(test.majorityElement(nums))
内容总结
以上是互联网集市为您收集整理的python基础之enumerate() 函数+ Counter类计数器全部内容,希望文章能够帮你解决python基础之enumerate() 函数+ Counter类计数器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。