Python两个列表列表shuffle

use*_*982 2 python list

我有两个清单:

a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)

我需要得到这样的东西:

c = [1, 5, 2, 6, 3, 7, 4, 8]
Run Code Online (Sandbox Code Playgroud)

我使用这个解决方案:

c = list(reduce(lambda x, y: x + y, zip(a, b)))
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

Roh*_*ain 9

使用列表理解:

>>> [x for tup in zip(a, b) for x in tup]
[1, 5, 2, 6, 3, 7, 4, 8]
Run Code Online (Sandbox Code Playgroud)

上面的嵌套列表理解等效于嵌套for循环(以防万一你感到困惑):

result = []
for tup in zip(a, b):
    for x in tup:
        result.append(x)
Run Code Online (Sandbox Code Playgroud)


Jon*_*nts 6

使用chain:

from itertools import chain, izip
interweaved = list(chain.from_iterable(izip(a, b)))
# [1, 5, 2, 6, 3, 7, 4, 8]
Run Code Online (Sandbox Code Playgroud)