# yyds干货盘点 # 盘点对Python列表中每个元素前面连续重复次数的数列统计

网友投稿 242 2022-09-05


# yyds干货盘点 # 盘点对Python列表中每个元素前面连续重复次数的数列统计

大家好,我是Python进阶者。

一、前言

前几天在Python钻石流群有个叫【周凡】的粉丝问了Python列表的问题,如下图所示。

下图是他的原始内容。

a = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]b = [0, 1, 2, 0, 1, 2, 0, 1, 0, 0, 1, 2, 3, 4, 5]

二、实现过程

这里给出一个方法,【瑜亮老师】给出的代码如下所示:

list1=[1,1,1,0,0,0,1,1,0,1,1,1,1,1,1]result=[0]flag=0for i in range(1,len(list1)): if list1[i]==list1[i-1]: flag+=1 else: flag=0 result.append(flag)print(result)

其实这个​​flag​​解法之前【月神】在最强王者群里边分享过,确实是个好方法,真是用处好多呢!

后来还有一个【绅】大佬也给出了一个代码,思路也非常不错。

list1 = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]list2 = []l = 0for i in range(len(list1)): l = l + 1 if list1[i] == list1[i-1] and i != 0 else 0 list2.append(l)print(list2)

这里还有【逸】大佬给的一份代码,换汤不换药,如下所示:

list1 = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]result = [0] * len(list1)result[0] = 0for i in range(1, len(list1)): if list1[i] != list1[i-1]: result[i] = 0 else: result[i] = result[i-1] + 1print(result)

后来月神还给了一个逻辑性比较强的解法,代码如下所示:

list1 = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]result = [0] * len(list1) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]pre_num = 0for num in range(len(list1)): # print("list1[num]:", list1[num]) # print("list1[pre_num]: ", list1[pre_num]) print(num, pre_num) if list1[num] != list1[pre_num]: pre_num = num result[num] = num - pre_num print(result)print(result)

这个方法就是判断当前的数据和之前的​​pre_num​​数据是否相同,不相同就将​​num​​赋值给​​pre_num​​,以此类推。

后来还有【布达佩斯的永恒】大佬使用了内置函数,也把这个问题解决了,代码如下所示:

from functools import reducefrom itertools import groupbylist1 = [1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]ret = reduce(lambda x, y: x + y, [[i for i in range(len(list(num)))] for item, num in groupby(list1)])print(ret)

一般人还真是想不到!

三、总结

大家好,我是Python进阶者。这篇文章主要盘点一个Python列表统计小题目,文中针对该问题给出了具体的解析和代码演示,一共5个方法,帮助粉丝顺利解决了问题。如果你还有其他解法,欢迎私信我。

最后感谢粉丝【周凡】提问,感谢【瑜亮老师】、【绅】、【逸总】、【月神】、【布达佩斯的永恒】大佬给出的代码和具体解析,感谢【dcpeng】、【懒人在思考】、【王子】、【猫药师Kelly】、【冯诚】等人参与学习交流。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java字符串中指定部分反转的三种方式
下一篇:开发更健壮python程序的一些工具(python用什么开发工具)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~