编写Python程序以在列表的每个元素之前插入一个元素

时间:2018-11-22 21:04:37

标签: python itertools chain

在下面的程序中,嵌套方法与chain / 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 :(得分:1)

chain并不是问题所在,您的问题归结为:

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

一旦您对zip_iter变量进行了迭代,则第二次不产生任何结果,这就是zip的工作方式(例如,range可以被多次迭代,但是那是因为它使用整数作为参数,而不是可迭代的参数,在第二次运行时可能会用完...)

最后一个示例之所以有效,是因为您正在重新创建一个新的zip对象。