<div dir="ltr">What's wrong with making this two lines?<div><br></div><div><div><br></div><div>    In [1]: import random</div><div><br></div><div>    In [2]: xs = [10, 20, 30]</div><div><br></div><div>    In [3]: def foo(x):</div><div>        ...:     return [x + i for i in range(3)]</div><div>        ...:</div><div>        ...:</div><div><br></div><div>    In [4]: def bar(y):</div><div>        ...:     if random.random() < 0.3:</div><div>        ...:         return None</div><div>        ...:     return str(y)</div><div>        ...:</div><div>        ...:</div><div><br></div><div>    In [5]: ys = ((y, bar(y)) for x in xs for y in foo(x))</div><div><br></div><div>    In [6]: {y: result for y, result in ys if result is not None}</div><div>    Out[6]: {10: '10', 11: '11', 20: '20', 21: '21', 22: '22', 30: '30', 32: '32'}</div></div><div><br></div><div><br></div></div>