编写一个 Python 程序在列表的每个元素之前插入一个元素
Write a Python program to insert an element before each element of a list
在下面的程序中,嵌套方法与 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']
chain
各种方法都不是问题,你的问题归结为:
>>> a = zip([1],[2])
>>> list(a)
[(1, 2)]
>>> list(a)
[]
一旦你迭代了你的 zip_iter
变量,它第二次不会产生任何结果,这就是 zip
的工作方式(例如 range
可以迭代多次,但那是因为它采用整数作为参数,而不是可迭代对象,它可能会在第二次运行时耗尽...)
最后一个示例有效,因为您正在重新创建一个新的 zip
对象。
在下面的程序中,嵌套方法与 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']
chain
各种方法都不是问题,你的问题归结为:
>>> a = zip([1],[2])
>>> list(a)
[(1, 2)]
>>> list(a)
[]
一旦你迭代了你的 zip_iter
变量,它第二次不会产生任何结果,这就是 zip
的工作方式(例如 range
可以迭代多次,但那是因为它采用整数作为参数,而不是可迭代对象,它可能会在第二次运行时耗尽...)
最后一个示例有效,因为您正在重新创建一个新的 zip
对象。