Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create (nested) List from two Lists in Python

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
like image 761
virtualsets Avatar asked Jan 21 '14 13:01

virtualsets


People also ask

Can a list be nested in another list?

As we know, that list can contain any object, so here the concept of nested list is introduced. So simply, when there is a list containing a list inside itself as an element(sublist) or data, then that list is known as a nested list. To get more clear with the nested list refer to an example given below.

How do you make a list of lists in Python?

Definition: A list of lists in Python is a list object where each list element is a list by itself. Create a list of list in Python by using the square bracket notation to create a nested list [[1, 2, 3], [4, 5, 6], [7, 8, 9]] .


2 Answers

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]]
like image 86
brianmearns Avatar answered Sep 18 '22 00:09

brianmearns


Try:

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

merged = map(list, zip(listone, listtwo))

zip(listone, listtwo) will return a list of tuples. Since you want a list of lists you need to convert each tuple to a list. map(list, list_of_tuples) call will do exactly that.

like image 30
Nigel Tufnel Avatar answered Sep 20 '22 00:09

Nigel Tufnel