在下面的程序中,嵌套方法与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']
答案 0 :(得分:1)
chain
并不是问题所在,您的问题归结为:
>>> a = zip([1],[2])
>>> list(a)
[(1, 2)]
>>> list(a)
[]
一旦您对zip_iter
变量进行了迭代,则第二次不产生任何结果,这就是zip
的工作方式(例如,range
可以被多次迭代,但是那是因为它使用整数作为参数,而不是可迭代的参数,在第二次运行时可能会用完...)
最后一个示例之所以有效,是因为您正在重新创建一个新的zip
对象。