Я получил этот оригинальный список:
list1=[['jennifer ryann', 'jennifer lopez'],[' jennifer anniston', 'jennifer jason leigh and jennifer morrison', 'Jennifer Garner']]
. По некоторым причинам я разделил подсписок:
from itertools import chain
lists = list(chain.from_iterable(list1))
Мне также нужно сжать элементы:
list2 = [(el1, el2) for el1, el2 in zip(lists, lists[1:])]
Все элементы в списке 2, например, попарно (сжатый список), ('jennifer ryann', 'jennifer lopez'). Несколько пар элементов, содержащих слова ' и ', такие как ('jennifer anniston Дженнифер Джейсон Ли и Дженнифер Моррисон.
Я собираюсь сделать:
- Если в элементе найдены слова 'и' , элементы будут разбиты, а слово ' и 'должны быть удалены. Например, слова ' и ', содержащиеся в элементах 'jennifer jason leigh' и 'jennifer morrison' , будут удалены.
- Тогда элемент пары ' Дженнифер Эннистон 'будет упакована с обоими разделенными элементами ' Дженнифер Джейсон Ли ' и ' Дженнифер Моррисон '. Он будет генерировать два новых архива, таких как («Дженнифер Аннистон», «Дженнифер Джейсон Ли») и («Дженнифер Эннистон», «Дженнифер Моррисон»)
- А также оба расщепленных элемента ' Дженнифер Джейсон Ли 'и' Дженнифер Моррисон 'будут заархивированы следующим элементом ' Дженнифер Гарнер '. Это могут быть сгенерированы еще два элемента («Дженнифер Джейсон Ли», «Дженнифер Гарнер») и («Дженнифер Моррисон», «Дженнифер Гарнер»)
Ожидаемый результат будет следующим:
[('jennifer ryann', 'jennifer lopez'), ('jennifer lopez', ' jennifer anniston'), (' jennifer anniston', 'jennifer jason leigh '),(' jennifer anniston', ' jennifer morrison'), (' jennifer jason leigh ', 'jennifer Garner ') , (' jennifer morrison ', 'jennifer Garner ') ]
В моем коде я могу сгенерировать новый сжатый список в текущем сжатом списке, но не могу объединить текущий сжатый список в список2.
Это мой код
curr_zipp = []
for s, sublists in enumerate(list2):
for e in range(len(sublists)):
if 'and' in sublists[e]:
if e== 1 :
root_elem = sublists[e - 1]
split_elem = sublists[e].split('and')
curr_zipp.append((root_elem,split_elem[0]))
curr_zipp.append((root_elem,split_elem[1]))
elif e ==0:
root_elem = sublists[e -1]
split_elem = sublists[e].split('and')
curr_zipp.append((split_elem[0],root_elem))
curr_zipp.append((split_elem[1],root_elem))
Надеюсь, кто-нибудь поможет мне объединить список curr_zip без изменения текущей позиции элементов. Мне важно сохранить номер позиции. Заранее спасибо