[英]find similar items following each other in a python list
如何在列表中查找彼此相邻的相似项目。 例如:
list = ["A","B", "B", "C", "A", "A" ]
#output:
A-1, B-1, B-2, C-1, A-1, A-2
听起来像itertools.groupby
的工作:
>>> from itertools import groupby
>>> lst = ["A","B", "B", "C", "A", "A" ]
>>> ['{}-{}'.format(x, i) for k, g in groupby(lst) for i, x in enumerate(g, 1)]
['A-1', 'B-1', 'B-2', 'C-1', 'A-1', 'A-2']
如果需要字符串作为输出,请使用str.join
:
>>> ", ".join('{}-{}'.format(x, i) for k, g in groupby(lst) for i, x in enumerate(g, 1))
'A-1, B-1, B-2, C-1, A-1, A-2'
groupby
作用是按值对项目进行分组(如果有的话,也可以使用键函数对它们进行分组),然后使用enumerate()
遍历每个组以获取索引和项目。
list = ["A","B", "B", "C", "A", "A" ]
stri=''
counter=1
for i in list:
if stri!=i:
stri=i
counter=1
else:
counter+=1
print stri,'-',counter
代码说明:
stri
来跟踪字母和计数器以获得计数 stri!=i
分配新的stri,否则增加计数器
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.