Нет отдельной функции, но ее довольно легко создать самостоятельно:
lst = sorted(lst)
longests = [lst[0]]
for item in lst:
if item.startswith(longests[-1]):
longests[-1] = item
else:
longests.append(item)
print(longests)
другой подход:
from operator import itemgetter
from itertools import groupby
class adjacent:
def __init__(self, func, init=None):
self.func = func
self.last = init
def key(self, value):
if not self.func(self.last, value):
self.last = value
return self.last
slst = sorted(lst, reverse=True)
groups = groupby(slst, adjacent(str.startswith, "").key)
longests = map(itemgetter(0), groups)
print(list(longests))
Обратите внимание, что в приведенной выше реализации "4 | 1" рассматривается какпрефикс "4 | 131", потому что он использует сопоставление строк.Если вы хотите сопоставить только целые строки между каналами, вам просто нужно сначала разделить их на каналы и заменить на начальные с списком .