У меня есть несколько длинных списков, состоящих из тысяч слов, отсортированных по длине, по одному списку для каждой длины слова. Для каждого слова длины n в списке я хотел бы сгенерировать все слова из списка со словами длины n+1, то есть просто добавив одну дополнительную букву. Следовательно, слово «ПРИМЕР» должно генерировать «ПРИМЕР, ПРИМЕРЫ, ПРИМЕР, МЕГАПЛЕКС», предполагая, что эти слова находятся в списке из восьми буквенных слов.
Методом проб и ошибок я нашел то, что выполняет свою работу, но она беспорядочна и работает целую вечность, поскольку я новичок в Python. Я много боролся со всеми вариантами повторяющихся букв... Поскольку я хочу расширить это, чтобы охватить все слова, какой лучший и более эффективный способ выполнить эту работу?
SevenPlusOneList = []
for word7 in ListOfSevens:
SevenPlusOne = []
SevenCount = collections.Counter(word7)
for word8 in ListOfEights:
EightCount = collections.Counter(word8)
NotSharedLetters = {k: SevenCount[k] for k in EightCount if k in EightCount and SevenCount[k] != EightCount[k]}
if len(NotSharedLetters) == 1 and len(EightCount) >= len(SevenCount) and (len(EightCount)-len(SevenCount) == 1 or list(NotSharedLetters)[0] in SevenCount):
SevenPlusOne.append(word8)
if len(SevenPlusOne) > 0:
SevenPlusOneList.append(SevenPlusOne)
else:
SevenPlusOneList.append('-')
Подробнее здесь: https://stackoverflow.com/questions/791 ... -of-length
Нахождение всех слов длины n+1 путем добавления одной дополнительной буквы к словам длины n. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение