Python 合并切片列表

Python 合并切片列表,python,list,Python,List,我有一个包含N个元素的列表,我使用特定的步骤对其进行切片,比如说3: slice0 = text[0::3] slice1 = text[1::3] slice2 = text[2::3] 在分别进行一些处理之后,现在我需要将它们合并回原始列表中的相同位置。有类似的(简单的)方法吗 例如: L = [1,2,3,4,5,6] -> L0 = [1,4], L1 = [2,5], L2 = [3,6] 然后进行一些处理(例如,将每个列表分别乘以1、2和3): L0 = [1,4], L1

我有一个包含N个元素的列表,我使用特定的步骤对其进行切片,比如说3:

slice0 = text[0::3]
slice1 = text[1::3]
slice2 = text[2::3]
在分别进行一些处理之后,现在我需要将它们合并回原始列表中的相同位置。有类似的(简单的)方法吗

例如:

L = [1,2,3,4,5,6] -> L0 = [1,4], L1 = [2,5], L2 = [3,6]
然后进行一些处理(例如,将每个列表分别乘以1、2和3):

L0 = [1,4], L1 = [4,10], L2 = [9,18] 
将它们合并回原始位置

L = [1,4,9,4,10,18]
谢谢。

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

>>> 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]
或使用:

在Python3中,
zip
是一个生成器函数,正如其他人已经指出的那样,可能更可取

>>> L0 = [1,4]
>>> L1 = [4,10]
>>> L2 = [9,18]
>>> [x for zipped in zip(L0, L1, L2) for x in zipped]
[1, 4, 9, 4, 10, 18]
或另一种使用:

元组:

>>> my_data
(1, 4, 9, 4, 10, 18)
名单:


可以使用
chain(*…)
,而不是
chain(*…)
(它对Python3.x很有用,Python3.x中
zip
是一个生成器)。@ovgolovin:当然,这样可以避免转换成元组。
>>> from itertools import chain
>>> list(chain.from_iterable(zip(L0, L1, L2)))
[1, 4, 9, 4, 10, 18]
>>> from itertools import chain
>>> l0, l1, l2, = [1,4], [4,10], [9,18]
>>> list(chain.from_iterable(zip(l0,l1,l2)))
[1, 4, 9, 4, 10, 18]
L0 = [1,4]
L1 = [4,10] 
L2 = [9,18]

#returns a tuple

my_data = sum(zip(L0,L1,L2),())

#or if you need a list

my_data = list(sum(zip(L0,L1,L2),()))
>>> my_data
(1, 4, 9, 4, 10, 18)
>>> my_data
[1, 4, 9, 4, 10, 18]