如何连接两个列表以使元素处于替代位置?
How to concatenate two lists so that elements are in alternative position?
例如:
a=[1,2,3,4,5,6]
b=[7,8,9,10,11,12]
然后结果:
c=[1,7,2,8,3,9,4,10,5,11,6,12]
如何连接两个列表,使元素处于不同的位置??
我曾尝试将它们 link 放入新列表并重新排列,但它没有出现。
如果你能告诉我很长的路要走(不要过多使用内置函数),那就太好了。我是 python 的新手,我的学校教的不多。
谢谢。
假设它们的长度相同,只需在它们后面附加一个 for 循环即可:
c = []
for i in range(len(a)):
c.append(a[i])
c.append(b[i])
使用zip
and list comprehension:
>>> a = [1, 2, 3, 4, 5, 6]
>>> b = [7, 8, 9, 10, 11, 12]
>>> [x for xs in zip(a, b) for x in xs]
[1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12]
>>> import itertools
>>> a = [1, 2, 3, 4, 5, 6]
>>> b = [7, 8, 9, 10, 11, 12]
>>> print list(itertools.chain.from_iterable(zip(a, b)))
对于 python 3 中大小不一的列表,您可以使用 filter
和 zip_longest
过滤 None
:
a = [1,2,3,4,5,6]
b = [7,8,9,10,11,12,13]
from itertools import chain, zip_longest
print(list(filter(None.__ne__ ,chain.from_iterable(zip_longest(a,b)))))
[1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12, 13]
使用 python2 使用列表组合和过滤器 None 与 ele is not None
:
print([ ele for ele in chain.from_iterable(zip_longest(a, b)) if ele is not None])
如果您可能将 None
作为列表中的值,请使用自定义标记值,将其用作 zip_longest
中的 fillvalue
:
my_sent = object()
print([ ele for ele in chain.from_iterable(zip_longest(a, b,fillvalue=my_sent)) if ele is not my_sent])
例如:
a=[1,2,3,4,5,6]
b=[7,8,9,10,11,12]
然后结果:
c=[1,7,2,8,3,9,4,10,5,11,6,12]
如何连接两个列表,使元素处于不同的位置??
我曾尝试将它们 link 放入新列表并重新排列,但它没有出现。 如果你能告诉我很长的路要走(不要过多使用内置函数),那就太好了。我是 python 的新手,我的学校教的不多。 谢谢。
假设它们的长度相同,只需在它们后面附加一个 for 循环即可:
c = []
for i in range(len(a)):
c.append(a[i])
c.append(b[i])
使用zip
and list comprehension:
>>> a = [1, 2, 3, 4, 5, 6]
>>> b = [7, 8, 9, 10, 11, 12]
>>> [x for xs in zip(a, b) for x in xs]
[1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12]
>>> import itertools
>>> a = [1, 2, 3, 4, 5, 6]
>>> b = [7, 8, 9, 10, 11, 12]
>>> print list(itertools.chain.from_iterable(zip(a, b)))
对于 python 3 中大小不一的列表,您可以使用 filter
和 zip_longest
过滤 None
:
a = [1,2,3,4,5,6]
b = [7,8,9,10,11,12,13]
from itertools import chain, zip_longest
print(list(filter(None.__ne__ ,chain.from_iterable(zip_longest(a,b)))))
[1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12, 13]
使用 python2 使用列表组合和过滤器 None 与 ele is not None
:
print([ ele for ele in chain.from_iterable(zip_longest(a, b)) if ele is not None])
如果您可能将 None
作为列表中的值,请使用自定义标记值,将其用作 zip_longest
中的 fillvalue
:
my_sent = object()
print([ ele for ele in chain.from_iterable(zip_longest(a, b,fillvalue=my_sent)) if ele is not my_sent])