Как объединить поэлементный список в Python? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть список строк, и я хочу объединить элементы списка следующим образом:

before = ['a', 'b', 'c', 'd']

after = ['ab', 'bc', 'cd']

Яне уверен в том, как вызывается вышеуказанная операция.

Однако я попытался использовать метод диапазона:

after = [before[i]+before[i+1] for i in range(0,len(before),2)]

, но это приводит к: after = ['ab', 'cd']

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Вы также можете использовать тройник :

from itertools import tee

before = ['a', 'b', 'c', 'd']
c, n = tee(before, 2)
next(n)

after = [cu + ne for cu, ne in zip(c, n)]
print(after)

Выход

['ab', 'bc', 'cd']

Далее

  1. Рецепты Itertools
0 голосов
/ 29 ноября 2018

В itertools есть полезный рецепт, который вы можете использовать:

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

>>> map(lambda x: ''.join(x), pairwise(before))
['ab', 'bc', 'cd']
0 голосов
/ 29 ноября 2018

Ваш метод не допускает перекрытия, так как индекс увеличивается на 2.

Быстрое исправление будет

after = [before[i]+before[i+1] for i in range(len(before)-1)]

Но я бы предпочел zip список с нарезанной версиейо себе:

before = ['a', 'b', 'c', 'd']

after = [a+b for a,b in zip(before,before[1:])]

>>> after
['ab', 'bc', 'cd']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...