📌  相关文章
📜  Python - 连续相同的元素计数(1)

📅  最后修改于: 2023-12-03 15:33:57.433000             🧑  作者: Mango

Python - 连续相同的元素计数

在Python编程中,经常需要计算列表或字符串中连续相同元素的个数。这个问题在数据分析、字符串处理和数组操作中很常见。

在本文中,我们将介绍如何使用Python计算连续相同元素的个数。我们将讨论两种方法:循环和迭代器。

循环方法

循环方法是最基本的方法,其原理是遍历列表或字符串,对连续相同元素计数。

def count_elements(input_list):
    result = []
    count = 1
    for i in range(len(input_list)-1):
        if input_list[i] == input_list[i+1]:
            count += 1
        else:
            result.append((input_list[i], count))
            count = 1
    result.append((input_list[-1], count))
    return result

以上代码循环遍历输入列表或字符串,用变量count记录当前连续相同元素的个数。如果当前元素与下一个元素相同,则count+1,否则将当前元素和其个数添加到结果列表result中,然后count重新设置为1。

这种方法的时间复杂度为O(n),是一种简单而有效的方法。

迭代器方法

迭代器方法是一种更高效的方法,其原理是将列表或字符串转换成迭代器,并使用itertools库中的groupby函数。

from itertools import groupby

def count_elements(input_list):
    return [(k, sum(1 for i in g)) for k, g in groupby(input_list)]

以上代码中,groupby函数将输入列表或字符串转换成迭代器,并对连续相同元素进行分组。sum函数计算每个分组中元素的个数。

这种方法的时间复杂度为O(n),但是空间复杂度较低,因为不需要创建中间列表。

总结

在本文中,我们介绍了两种方法来计算连续相同元素的个数。循环方法是最基本的方法,而迭代器方法则更高效。我们可以根据具体情况来选择使用哪一种方法。