Как лучше всего выполнять список слов и превращать их в фразы на языке Python?
words = ["hey","there","stack","overflow"]
print magicFunction(words)
>>> ["hey","there","stack","overflow", "hey there stack","hey there", "there stack overflow","there stack", "stack overflow", "hey there stack overflow" ]
Порядок не имеет значения ....
ОБНОВЛЕНИЕ: Должно быть более конкретным, слова должны быть последовательными, как в списке, как в моем примере распечатать. Таким образом, мы могли бы иметь «эй там», но не «эй стека»
3 ответа
import itertools
# Adapted from Python Cookbook 2nd Ed. 19.7.
def windows(iterable, length=2, overlap=0):
"""
Return an iterator over overlapping windows of length <length> of <iterable>.
"""
it = iter(iterable)
results = list(itertools.islice(it, length))
while len(results) == length:
yield results
results = results[length-overlap:]
results.extend(itertools.islice(it, length-overlap))
def magic_function(seq):
return [' '.join(window) for n in range(len(words)) for window in windows(seq, n + 1, n)]
Полученные результаты:
>>> words = ["hey","there","stack","overflow"]
>>> print magic_function(words)
['hey', 'there', 'stack', 'overflow', 'hey there', 'there stack', 'stack overflow', 'hey there stack', 'there stack overflow', 'hey there stack overflow']
Это будет работать, кажется, достаточно эффективно.
def magicFunction(words):
phrases = []
start = 0
end = 0
for i in xrange(1, len(words) + 1):
start = 0
end = i
while (end <= len(words)):
phrases.append(" ".join(words[start:end]))
start += 1
end += 1
return phrases
Я думаю, что-то вроде этого будет работать, хотя у меня нет доступа к Python в данный момент.
def magic_function(words):
for start in range(len(words)):
for end in range(start + 1, len(words) + 1):
yield " ".join(words[start:end])
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.