разбить ссылки на куски с помощью скользящего окна - PullRequest
0 голосов
/ 04 февраля 2020

Итак, я пытаюсь разбить список на 4 части, но с оговоркой. Предостережение состоит в том, что я хочу, чтобы список взял последние 2 элемента предыдущего чанка и соединил его со следующими 2 элементами, чтобы сделать следующий вывод:

Например:

Input: text=['one','two','three','four','five','six','seven','eight']
Output: ['one two three four','three four five six', 'five six seven eight']

Прямо сейчас у меня есть это:

from itertools import islice

text=['one','two','three','four','five','six','seven','eight']

def window(seq, n=2):
    "Returns a sliding window (of width n) over data from the iterable"
    "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result
    for elem in it:
        result = result[1:] + (elem,)
        yield result

processed = [' '.join(i) for i in window(text,4)]
print(processed)
Output:
['one two three four', 'two three four five', 'three four five six', 'four five six seven', 'five six seven eight']

Опять же, мой идеальный результат будет:

['one two three four','three four five six', 'five six seven eight']

1 Ответ

3 голосов
/ 04 февраля 2020

Как то так?

data = 'i ii iii iv v vi vii viii'.split()

print([' '.join(data[i-2:i+2]) for i in range(2, len(data), 2)])
...