l = ["volcano", "noway", "lease", "sequence", "erupt"]
'volcanowayleasequencerupt'
使用itertools.groupby
但当行中有两个重复的字母(即leasesequence
->;sese
)时,它似乎不起作用:
>>> from itertools import groupby
>>> "".join([i[0] for i in groupby("".join(l))])
'volcanonowayleasesequencerupt'
正如您所看到的,它仅在最后'e'
中被删除,这并不理想,因为如果一个字母有两个字符,它们将收缩为1。i、 e'suddenly'
变成'sudenly'
我正在寻找一种最适合这种情况的方法
先谢谢你
编辑
我的列表中没有任何重复项
下面是一个强力重复数据消除程序:
然后,只需快速浏览:
当然,这适用于任何长度的列表
xs
使用辅助函数,通过删除单词的最长前缀(也是后缀
s
)来裁剪单词t
:然后用前面的单词裁剪每个单词:
在我看来,更具可读性的版本是:
但是,它还考虑了以前重叠的单词中的“累积”字符:
相关问题 更多 >
编程相关推荐