Дублирующий элемент в списке python

У меня есть list в Python:

 l = ['a', 'c', 'e', 'b'] 

Я хочу дублировать каждый элемент сразу рядом с оригиналом.

 ll = ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b'] 

Порядок элементов должен быть сохранен.

5 Solutions collect form web for “Дублирующий элемент в списке python”

 >>> l = ['a', 'c', 'e', 'b'] >>> [x for pair in zip(l,l) for x in pair] ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b'] 

Или

 >>> from itertools import repeat >>> [x for item in l for x in repeat(item, 2)] ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b'] 

Это старый, но я не вижу прямого варианта здесь (IMO):

 [ item for item in l for repetitions in range(2) ] 

Итак, для конкретного случая:

 >>> l = ['a', 'c', 'e', 'b'] l = ['a', 'c', 'e', 'b'] >>> [ i for i in l for r in range(2) ] [ i for i in l for r in range(2) ] ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b'] >>> 

И обобщая:

 [ item for item in l for _ in range(r) ] 

Где r – количество повторений, которые вы хотите.

Таким образом, это пространство O (nr) и временная сложность, короткие, без зависимостей, а также идиоматические.

 import itertools ll = list(itertools.chain.from_iterable((e, e) for e in l)) 

На работе:

 >>> import itertools >>> l = ['a', 'c', 'e', 'b'] >>> ll = list(itertools.chain.from_iterable((e, e) for e in l)) >>> ll ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b'] 

Как отметил Lattyware, если вы хотите больше, чем просто удвоить элемент:

 from itertools import chain, repeat ll = list(chain.from_iterable(repeat(e, 2) for e in l)) 

Попробуй это

 for i in l: ll.append(i) ll.append(i) 

демонстрация

Он просто сделает вашу работу, но это не оптимизированный способ сделать это.

используйте ан. отправлено @Steven Rumbalski

Вот довольно простой способ:

 sum(zip(l, l), tuple()) 

Он дублирует каждый элемент и добавляет их в кортеж. Если вам не нужен кортеж (как я подозреваю), вы можете вызвать list на кортеже:

 list(sum(zip(l, l), tuple())) 

Несколько других версий (которые дают списки):

 list(sum(zip(l, l), ())) sum([list(i) for i in zip(l, l)], []) sum(map(list, zip(l, l)), []) 
  • если еще в понимании списка
  • понимание списка python для создания двух значений на одной итерации
  • понимание вложенного списка python
  • Попытка понимания списка Python с двумя переменными разных диапазонов
  • Как удалить список слов из списка строк
  • Python: найдите последовательное изменение в одном члене пар списка, сообщите другое
  • фильтрация элементов из списка списков в Python?
  • Использование определения списка для соответствия значениям словарей, которые хранятся в списках
  • Python - лучший язык программирования в мире.