Jaki jest Pythonic sposób na znalezienie najdłuższego wspólnego prefiksu listy list?
Dany: lista list, takich jak[[3,2,1], [3,2,1,4,5], [3,2,1,8,9], [3,2,1,5,7,8,9]]
Do zrobienia: Znajdź najdłuższy wspólny prefiks wszystkich podlist.
Istnieje: W innym wątku ”Wspólne elementy między dwiema listami nie używającymi zestawów w Pythonie", sugeruje się użycie" Counter ", który jest dostępny powyżej python 2.7. Jednak nasz obecny projekt został napisany w python 2.6, więc" Counter "nie jest używany.
Obecnie koduję to tak:
l = [[3,2,1], [3,2,1,4,5], [3,2,1,8,9], [3,2,1,5,7,8,9]]
newl = l[0]
if len(l)>1:
for li in l[1:]:
newl = [x for x in newl if x in li]
Ale uważam to za mało pytoniczne, czy jest lepszy sposób kodowania?
Dzięki!
Nowa edycja: Przykro mi to wspomnieć: w moim przypadku współdzielone elementy list w 'l' mają taką samą kolejność i zawsze zaczynają od 0 pozycji. Więc nie będziesz miał takich przypadków[[1,2,5,6],[2,1,7]]