技术问询:如何统计列表中文本变更(changes)的次数?
统计列表中元素变更次数的方法
要统计列表中元素的变更次数,本质就是统计相邻元素不相同的次数——每出现一次相邻元素切换,就计为一次变更。
方法一:循环遍历实现
这是最直观的方式,遍历列表从第二个元素开始,逐个和前一个元素对比:
def count_changes(lst): # 列表长度小于等于1时,没有变更的可能 if len(lst) <= 1: return 0 change_count = 0 # 从索引1开始遍历,对比当前元素与前一个元素 for i in range(1, len(lst)): if lst[i] != lst[i-1]: change_count += 1 return change_count
测试示例:
# 测试变更次数为0的列表 test_list1 = ['Comcast', 'Comcast', 'Comcast', 'Comcast', 'Comcast', 'Comcast'] print(count_changes(test_list1)) # 输出:0 # 测试变更次数为3的列表 test_list2 = ['Comcast', 'Comcast', 'Sprint', 'AT&T', 'Comcast', 'Comcast'] print(count_changes(test_list2)) # 输出:3
方法二:用zip和生成器表达式简化代码
利用Python的内置函数可以写出更简洁的实现,zip(lst, lst[1:])会将列表中相邻的元素两两配对,再通过生成器统计配对中元素不同的数量:
def count_changes(lst): return sum(1 for prev, curr in zip(lst, lst[1:]) if prev != curr)
这个实现和方法一逻辑完全一致,只是写法更简洁,测试结果也相同。
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

