社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在python中对相似序列进行分组?[副本]

c24b • 4 年前 • 776 次点击  

这个问题已经有了答案:

我想在python中分割一个项目列表序列,或者如果它们相似的话对它们进行分组。

我已经找到了一个解决方案,但我想知道是否有更好和更有效的方法来做到这一点(总是要学习更多)。

这是主要目标

input = ['a','a', 'i', 'e', 'e', 'e', 'i', 'i', 'a', 'a'] 
desired_ouput = [['a','a'], ['i'], ['e','e', 'e'], ['i', 'i'], ['a', 'a']  

我也很想听听揭露问题的好方法

#!/usr/bin/env python3
def group_seq(listA):
    listA = [[n] for n in listA]
    for i,l in enumerate(listA):
        _curr = l
        _prev = None
        _next= None
        if i+1 < len(listA):
            _next = listA[i+1]
        if i > 0:
            _prev = listA[i-1]    
        if _next is not None and _curr[-1] == _next[0]:
            listA[i].extend(_next)
            listA.pop(i+1)
        if _prev is not None and _curr[0] == _prev[0]:
            listA[i].extend(_prev)
            listA.pop(i-1)
    return listA  
listA = ['a','a', 'i', 'e', 'e', 'e', 'i', 'i', 'a', 'a']
output = group_seq(listA)    
print(listA)
['a', 'a', 'i', 'e', 'e', 'e', 'i', 'i', 'a', 'a']
print(output)   
[['a', 'a'], ['i'], ['e', 'e', 'e'], ['i', 'i'], ['a', 'a']]
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46585
 
776 次点击  
文章 [ 1 ]  |  最新文章 4 年前