Корневая идентификация в списке данных в python:
Я новичок в Python. Я пытался придумать "Root Identification" из списка данных. Но это не работает. Вот код, который я пробовал:
listData=["blackish", "blacken","blacked"]
Результат, который я ожидаю:
root = [black] and suffixLi = ["ish", "en", "ed"]
Остальной код:
def root():
i=0
j=0
string = ""
for word in listData:
for i in range(len(min(listData, key=len))-1):
print(len(min(listData, key=len)))
if (listData[i][j]==listData[i+1][j]):
string=string+listData[i][j]
print(listData[i][j])
print(string)
i=i+1
j=j+1
print(string)
2 ответа
Решение
Предполагая, что вы хотите попытаться найти общий префикс:
def root_pre(l):
root = ""
for t in zip(*l):
if not all(t[0] == s for s in t):
break
root += t[0]
ln = len(root)
pres = [s[ln:] for s in listData]
return root, pres
print(root_pre(listData))
('black', ['ish', 'en', 'ed'])
В операторе if индекс i+1 находится вне диапазона. Исправьте свой цикл ограничить двумя строками ранее; вы не можете запустить "i" дальше, чем list_length-2, но вы пытаетесь запустить его до 6.
Кроме того, вы увеличиваете i внутри цикла, который уже контролирует его значение; Я думаю, вы не знаете, как обращаться с индексами цикла.