合并切片列表

Dan*_*Dan 3 python list

我有一个包含N个元素的列表,我使用某个步骤对其进行切片,让我们说3:

slice0 = text[0::3]
slice1 = text[1::3]
slice2 = text[2::3]
Run Code Online (Sandbox Code Playgroud)

在分开处理之后,现在我需要将它们合并回原始列表中的相同位置.是否有类似(简单)的方法来做到这一点?

例:

L = [1,2,3,4,5,6] -> L0 = [1,4], L1 = [2,5], L2 = [3,6]
Run Code Online (Sandbox Code Playgroud)

然后进行一些处理(比如将每个列表分别乘以1,2和3:

L0 = [1,4], L1 = [4,10], L2 = [9,18] 
Run Code Online (Sandbox Code Playgroud)

将它们合并回原来的位置

L = [1,4,9,4,10,18]
Run Code Online (Sandbox Code Playgroud)

谢谢.

Nik*_* B. 5

您可以使用该zip()功能将它们重新连接在一起:

>>> l0 = [1,4]; l1 = [4,10]; l2 = [9,18]
>>> zip(l0, l1, l2)
[(1, 4, 9), (4, 10, 18)]
>>> [x for t in zip(l0, l1, l2) for x in t]
[1, 4, 9, 4, 10, 18]
Run Code Online (Sandbox Code Playgroud)

或使用itertools.chain:

>>> from itertools import chain
>>> list(chain(*zip(l0, l1, l2)))
[1, 4, 9, 4, 10, 18]
Run Code Online (Sandbox Code Playgroud)

在Python 3中,哪里zip是生成器函数,itertools.chain.from_iterable可能是优选的,正如其他人已经指出的那样.