我正在尝试合并列表以产生如下结果: [a,1,b,2,c,3]但我无法使它正常工作。您能告诉我怎么了吗/告诉我怎么做?
def newList(a, b):
tmp = []
tmp.append(zip(a, b))
return tmp
a = ['a', 'b', 'c']
b = [1, 2, 3]
print(newList(a, b))
结果是,我在0x0449FE18处只能得到一个zip对象。
答案 0 :(得分:2)
您需要展平zip
产生的序列。最简单的方法是使用itertools.chain.from_iterable
:
>>> from itertools import chain
>>> list(chain.from_iterable(zip(['a', 'b', 'c'], [1,2,3])))
['a', 1, 'b', 2, 'c', 3]
类方法from_iterable
采用[('a', 1), ('b', 2), ...]
之类的可迭代对象,并通过一次从左到右从子可迭代对象中提取元素,将其变成单个可迭代对象。 / p>
答案 1 :(得分:1)
>>> [x for y in zip(['a', 'b', 'c'],[1, 2, 3]) for x in y]
['a', 1, 'b', 2, 'c', 3]
答案 2 :(得分:0)
无进口
b = [1,2]
a = ['a','b','c']
result = [item for a in map(None, a, b) for item in a][:-1]
['a',1,'b',2,'c']
重要数组“ b”比数组“ a”少一个元素
。
如果长度相同
result = [item for a in map(None, a, b) for item in a]
['a',1,'b',2,'c',3]
答案 3 :(得分:0)
您不需要使用zip
。假设两个列表具有相同数量的元素(就像您的问题一样),您可以做简单的事情
newList = list()
for i in range(len(a)):
newList.append(a[i])
newList.append(b[i])
print(newList)
如果列表的大小不同,那么您需要问自己一些关于订购的问题,但是您可以像这样简单
newList = list()
biggestList = len(a) if len(a) > len(b) else len(b)
for i in range(biggestList):
if a[i]:
newList.append(a[i])
if b[i]:
newList.append(b[i])
print(newList)
您可以使用此逻辑,具体取决于列表大小的标准以及如何处理订单。