以交错方式组合两个Python列表

时间:2015-11-27 16:27:01

标签: python list python-2.x

我想交错两个列表。例如:

arr1 = [1,2,3,4,5,6]
arr2 = [9,8,7,6]

我想获得像

这样的输出
[1,9,2,8,3,7,4,6,5,6]

我创建了以下脚本,但由于某种原因它无法运行:

arr1 = [1,2,3,4,5,6]
arr2 = [9,8,7,6]
x = 0

for a in arr2:
    x = x + 2
    arr1.insert(x, a)

我哪里错了?我不是在寻找随机洗牌。我正在使用python2.x

3 个答案:

答案 0 :(得分:3)

您可以使用itertools模块中的zip_longestchain.from_iterable

>>> arr1 = [1,2,3,4,5,6]
>>> arr2 = [9,8,7,6]
>>> from itertools import chain, zip_longest
>>> [i for i in chain.from_iterable(zip_longest(arr1, arr2)) if i is not None]
[1, 9, 2, 8, 3, 7, 4, 6, 5, 6]

您需要在python-2.x

中使用izip_longest而不是zip_longest

答案 1 :(得分:1)

我已经找到了一种不同的方法来做到这一点,没有进口。

mylist = []
a = [1,2,3,4,5,6]
b = [9,8,7,6]
for x in range(max(len(a), len(b))):
    if x < len(a):
        mylist.append(a[x])
    if x < len(b):
        mylist.append(b[x])

答案 2 :(得分:0)

如果你真的想以随机方式对它们进行洗牌,关键是将它们组合成一个列表并使用shuffle()。

from random import shuffle
import itertools as it

arr1 = [1,2,3,4,5,6]
arr2 = [9,8,7,6]
x = list(it.chain(arr1,arr2))
shuffle(x)
print(x)

编辑问题已更新,以反映所需的订单并非随机。

相关问题