python bijection

M.-A. Lemburg mal at egenix.com
Mon Dec 7 08:07:17 EST 2009


Carl Banks wrote:
> On Dec 4, 4:42 pm, Lie Ryan <lie.1... at gmail.com> wrote:
>> On 12/5/2009 9:41 AM, Carl Banks wrote:
>>
>>
>>
>>
>>
>>> On Dec 4, 12:46 pm, geremy condra<debat... at 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/



More information about the Python-list mailing list