Напишите программу на Python для вставки элемента перед каждым элементом списка - PullRequest
0 голосов
/ 23 ноября 2018

В приведенной ниже программе в чем разница между вложенным подходом и цепочкой / chain.from_iterable, когда мы получаем разные выходные данные.

"" "Напишите программу на Python, чтобы вставить элемент перед каждым элементом списка. "" "Например:

from itertools import repeat, chain

def insertElementApproach2():
   color = ['Red', 'Green', 'Black']
   print("The pair element:")
   zip_iter = zip(repeat('a'),color)
   print((list(zip_iter)))

   print("The combined element using chain:")
   print(list(chain(zip_iter)))

   print("The combined element using chain.from_iterable:")
   print(list(chain(zip_iter)))

   print("Using the nested approach:")
   print(list(chain.from_iterable(zip(repeat('a'),color))))

   Output: 


The pair element:
   [('a', 'Red'), ('a', 'Green'), ('a', 'Black')]
   The combined element using chain:
   []
   The combined element using chain.from_iterable:
   []
   Using the nested approach:
   ['a', 'Red', 'a', 'Green', 'a', 'Black']

1 Ответ

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

chain различные подходы не являются проблемой, ваша проблема сводится к следующему:

>>> a = zip([1],[2])
>>> list(a)
[(1, 2)]
>>> list(a)
[]

после того, как вы перебрали переменную zip_iter, во второй раз она ничего не дает, этокак работает zip (например, range может быть повторен несколько раз, но это потому, что он принимает целые числа в качестве параметров, а не итераций, которые могут быть исчерпаны при втором запуске ...)

Последний пример работает, потому что вы заново создаете свежий zip объект.

...