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