繁体   English   中英

在python列表中查找彼此相邻的相似项目

[英]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

代码说明:

  1. 采取变量stri来跟踪字母和计数器以获得计数
  2. 如果stri!=i分配新的stri,否则增加计数器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM