Carl Banks wrote: > On Dec 4, 4:42 pm, Lie Ryan <lie.1...@gmail.com> wrote: >> On 12/5/2009 9:41 AM, Carl Banks wrote: >> >> >> >> >> >>> On Dec 4, 12:46 pm, geremy condra<debat...@gmail.com> wrote: >>> more common than full-blown graph package). >>>> Sure, its a tree, which is also a graph. In this case it looks to >>>> me more like a directed acyclic graph than anything, but its >>>> pretty much just semantics since the interface is functionally >>>> equivalent. >> >>> I'd have to agree with Lie, yes a tree is a graph, but it's simply not >>> an argument that Python community is grasping for graph structures. >>> It's like arguing that the Python community could benefit from a >>> quaternion type, because quaternions are actually heavily used in >>> Python, because a scalar number is a quarternion. >> >>> Carl Banks >> >>> (Would be +1 on a good graph implementation... just not because of >>> ElementTree.) >> >> I think this could be an interpretation of the Zen: >> >> Simple is better than complex. >> Complex is better than complicated. >> >> can be read as: >> List is better than Tree >> Tree is better than Graph >> >> not having Tree and Graph package in the standard library force most >> people to find List-based solution. And people that know they need >> graphs will find them in 3rd party modules. I have needed Trees a few >> times in python, but very rarely a Graph (except for playing around). >> YMDWV (your mileage definitely will vary).
Trees are only a subset of general graphs and graphs often provide a more intuitive approach to problem representation than trying to squash all information into a tree or list. For certain problems, like e.g. dependency checking or routing, you can easily run into cycles which cannot be represented by trees (*). Furthermore, the property of being cycle-free (acyclic) is often one of the things you want to find out when dealing with graph data sets. (*) Note that Python does allow creating lists with cyclic references, but such usage is not really encouraged and will lead to delays in garbage collection: >>> l = [1,2,3] >>> l[2] = l >>> l [1, 2, [...]] -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Dec 07 2009) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ -- http://mail.python.org/mailman/listinfo/python-list