2D List comprehension & replace

Dang Griffith noemail at noemail4u.com
Fri Mar 12 15:50:33 CET 2004


On Thu, 11 Mar 2004 18:13:28 -0600, "Larry Bates"
<lbates at swamisoft.com> wrote:

>I've gone brain-dead trying to get this to work
>using list comprehensions.  I have a list of lists
>like the following:
>
>l=[[92.6, 0, 93.5],
>   [94.7, 95.6, 95.7],
>   [91.2, 92.1, 93.0]]
>
>what I want is a new list
>with the zero (0) replaced with None.
>
>I thought I would use the fact that the command:
>
>0 or None
>
>seems to return None.
>
>This procedural code does the trick, but I just
>know it can be done with a single list comprehension.
>
>tol=[]
>for a in l:
>    til=[]
>    for v in a:
>        if a != 0: til.append(v)
>        else:      til.append(None)
>
>    tol.append(til)
>
>l=tol
>
>Thanks in advance.
>
>Larry Bates
>

def NonifyNestedList(rows):
    return [[item or None for item in cols] for cols in rows]

    --dang



More information about the Python-list mailing list