Как Pythonic может найти самый длинный общий префикс списка списков?
Given: список списков, таких как[[3,2,1], [3,2,1,4,5], [3,2,1,8,9], [3,2,1,5,7,8,9]]
Todo: Найти самый длинный общий префикс из всех подсписков.
Exists: В другой теме & quot;Общие элементы между двумя списками, не использующими наборы в Python& quot ;, предлагается использовать & quot; Counter & quot ;, который доступен выше python 2.7. Однако наш текущий проект был написан на Python 2.6, поэтому & quot; Counter & quot; не используется
I currently code it like this:
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]
Но я нахожу это не очень питоническим, есть ли лучший способ кодирования?
Спасибо!
New edit: Извините, что упомянул: в моем случае, общие элементы списков в 'l' apos; иметь тот же порядок и всегда начинать с 0-го пункта. Так что у вас не будет таких случаев, как[[1,2,5,6],[2,1,7]]