我想交错两个列表。例如:
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
答案 0 :(得分:3)
您可以使用itertools
模块中的zip_longest
和chain.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)
编辑问题已更新,以反映所需的订单并非随机。