From: Lorenzo C. <l_c...@ev...> - 2003-10-02 19:49:18
|
Hi everybody, I noticed that there's a new class available in the Python library starting from version 2.3. Its name is "sets" (</usr/share/doc/python2.3/html/lib/module-sets.html> if you're using Debian). I wanted to point it out, because I think it's of special interest for GRAMPS. Class "sets", as its name says, has been written to deal with sets of objects. A set is similar to a list, but it differs for a substatial property: objects are unique within a given set. As you may guess, GRAMPS' task is foundamentally to work with sets. There cannot be two individuals, families, places, sources, etc, with the same ID. Hence, a collection of individuals is more properly a set, not a list (not in all cases, of course). The main advantage of using the sets class over a bare list object is that membership tests are carried out as O(1) rather than O(n/2) as for lists. Sets class also comes with a heap of useful functions like union, intersection, difference, etc. I played a little with the relationship graph (plugins/Graphvix.py) and I was able to boost up graph generation by a factor of 10 or so. I think that the porting from a pure list-based source code to a mixed list-set one is quite simple. Sets can be iterated over as it happens with lists; membership and non-membership tests are in the form of "x in s" and "x not in s" rispectively, like lists. Only the list.append() function has been replaced by set.add(). I hope you'll find sets class useful. -- email: lor...@em... Jabber: lo...@li... Fingerprint: 8CDD 3408 53B2 6122 99DA EE37 1523 68FC D906 4C08 Vuoi aiutarci ad avere le descrizioni dei pacchetti Debian in italiano? http://ddtp.debian.org/ |