lapin lapin - 6 months ago 16
Python Question

map - convert a nested for compound statement to map

Example :

>>>for x in iterable1:
... expression


The map form would be :

>>>map(lambda x:expression,iterable1)


How do I extend this to nested for?

Example :

>>>for x in itr1:
... for y in itr2:
... expr


Without using comprehensions.

Edit: Using only map.

Answer

Bear with me on this one. Not an explanation but this worked after 2 days. Using only map and list. It's bad code. Suggestions to shorten the code are welcome. Python 3 solution

Example using list comprehension:

>>> a=[x+y for x in [0,1,2] for y in [100,200,300]]
>>> a
[100,200,300,101,201,301,102,202,302]

Example using for:

>>>a=[]
>>>for x in [0,1,2]:
...    for y in [100,200,300]:
...        a.append(x+y)
...
>>>a
[100,200,300,101,201,301,102,202,302]

Now example using only map:

>>>n=[]
>>>list(map(lambda x:n.extend(map(x,[100,200,300])),map(lambda x:lambda y:x+y,[0,1,2])))
>>>n
[100,200,300,101,201,301,102,202,302]

Much smaller python2.7 solution:

>>>m=[]
>>>map(lambda x:m.extend(x),map(lambda x:map(x,[100,200,300]),map(lambda x:lambda y:x+y,[0,1,2])))
>>>m
[100,200,300,101,201,301,102,202,302]