Python recursive tree, linked list thingy

Wanderer wanderer at dialup4less.com
Thu Mar 8 17:12:56 CET 2012


On Mar 7, 3:27 pm, Ian Kelly <ian.g.ke... at gmail.com> wrote:
> On Wed, Mar 7, 2012 at 1:03 PM, Ian Kelly <ian.g.ke... at gmail.com> wrote:
> > A set of defective pixels would be the probable choice, since it
> > offers efficient membership testing.
>
> Some actual code, using a recursive generator:
>
> def get_cluster(defective, pixel):
>     yield pixel
>     (row, column) = pixel
>     for adjacent in [(row - 1, column), (row, column - 1),
>                      (row, column + 1), (row + 1, column)]:
>         if adjacent in defective:
>             defective.remove(adjacent)
>             for cluster_pixel in get_cluster(defective, adjacent):
>                 yield cluster_pixel
>
> defective = {(327, 415), (180, 97), (326, 415), (42, 15),
>              (180, 98), (325, 414), (325, 415)}
> clusters = []
>
> while defective:
>     pixel = defective.pop()
>     clusters.append(list(get_cluster(defective, pixel)))
>
> from pprint import pprint
> pprint(clusters)
>
> Cheers,
> Ian

This works for me and I can modify it to look for column defects also.
It also shows I know less about Python then I thought I did. I had to
read up on generators and iterators to understand the code.

Thanks



More information about the Python-list mailing list