Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nested list comprehension with two lists

I understand how the simple list comprehension works eg.:

[x*2 for x in range(5)] # returns [0,2,4,6,8] 

and also I understand how the nested list comprehesion works:

w_list = ["i_have_a_doubt", "with_the","nested_lists_comprehensions"]  # returns the list of strings without underscore and capitalized print [replaced.title() for replaced in [el.replace("_"," ")for el in w_list]] 

so, when I tried do this

l1 = [100,200,300] l2 = [0,1,2] [x + y for x in l2 for y in l1 ] 

I expected this:

[100,201,302] 

but I got this:

[100,200,300,101,201,301,102,202,302] 

so I got a better way solve the problem, which gave me what I want

[x + y for x,y in zip(l1,l2)] 

but I didn't understood the return of 9 elements on the first code

like image 722
André Caldas Avatar asked May 15 '13 14:05

André Caldas


People also ask

How do I make a nested list with two lists in Python?

Python Nested Lists First, we'll create a nested list by putting an empty list inside of another list. Then, we'll create another nested list by putting two non-empty lists inside a list, separated by a comma as we would with regular list elements.

How do you add a list to a nested list Python?

To add new values to the end of the nested list, use append() method. When you want to insert an item at a specific position in a nested list, use insert() method. You can merge one list into another by using extend() method. If you know the index of the item you want, you can use pop() method.

Can a list be nested in another list?

Lists can be nested within other lists, as shown in the following example that details a sequenced plan to relocate. In this case, it's an ordered list inside another one, though you can nest any type of list within any other type (see the dl entry in this chapter for a related note).


1 Answers

The reason it has 9 numbers is because python treats

[x + y for x in l2 for y in l1 ] 

similarly to

for x in l2:     for y in l1:        x + y 

ie, it is a nested loop

like image 184
rspencer Avatar answered Sep 25 '22 06:09

rspencer