Python实现遇1重置的循环内元素出现次数计数方法
实现方案
你可以用单次遍历的生成器写法实现,逻辑清晰同时符合Pythonic风格,性能也足够好:
list_sequences = [1, 2, 3, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3, 2, 3, 2, 3, 1] def count_occurrences(seq): count_1 = 0 count_2 = count_3 = 0 for num in seq: if num == 1: count_1 += 1 count_2 = count_3 = 0 yield count_1 elif num == 2: count_2 += 1 yield count_2 elif num == 3: count_3 += 1 yield count_3 occurrence_list = list(count_occurrences(list_sequences)) print(occurrence_list) # 输出:[1, 1, 1, 2, 2, 2, 1, 1, 3, 1, 1, 2, 2, 3, 3, 4, 4, 4]
逻辑说明
- 维护三个计数器:
count_1用来累计1的总出现次数,count_2和count_3用来统计上一次遇到1之后,2和3各自的出现次数 - 遍历原列表每一个元素:
- 遇到1时,
count_1自增1,同时重置2和3的计数器,返回当前count_1的值 - 遇到2时,
count_2自增1,返回当前count_2的值 - 遇到3时,
count_3自增1,返回当前count_3的值
- 遇到1时,
内容的提问来源于stack exchange,提问作者user3194861
相关产品推荐
相关产品推荐

