Create (nested) List from two Lists in Python

virtualsets picture virtualsets · Jan 21, 2014 · Viewed 7.8k times · Source

Hello I would like to create an Array from two Arrays but I do not want to create this new Array, with append() or extend().

Input arrays have the same number of rows and columns:

listone = [1,2,3]
listtwo = [4,5,6]

Outcome we expect:

mergedlist = [[1,4],[2,5],[3,6]]

It can't be done via

mergedlist = listone.append(listtwo) or mergedlist = listone.extend(listtwo)

I would like to get

mergedlist = [[1,4],[2,5],[3,6]]

How can I get the desired output?

This is a simple example to understand, real one has 14 files and 35 rows and the 61 Arrays.


For one dimensional the answer down is ok, but when you have array of list

listone = [[1,2,3],[1,2,3],[1,2,3]]
listtwo = [4,5,6]

I would like to get

result = [[1,2,3,4],[1,2,3,5],[1,2,3,6]]

when I work with merged = map(list, zip(listone, listtwo))

My result is [[[1, 2, 3], 4], [[1, 2, 3], 5], [[1, 2, 3], 6]] that is Bad

Answer

brianmearns picture brianmearns · Jan 21, 2014

Use the builtin zip function. It's exactly what you want. From the python manuals:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]

Or if you want a list of lists, instead of a list of tuples, you use zip with a list comprehension:

>>> zipped = [list(t) for t in zip(x, y)]
>>> zipped
[[1, 4], [2, 5], [3, 6]]