On 1/20/2015 4:47 PM, Mario wrote:
In article <d34dbfbe-fe82-47dc-8bc3-c8773e2b7...@googlegroups.com>,
rustompm...@gmail.com says...

Yeah python has trees alright.

Heres' some simple tree-code

Didn't you just demonstrate that Python has no trees and instead you
have to implement them yourself (or use a third-party implementation)?

I don't know what's the point of all this vain and misleading play with
words.

It is not play with words. A tree is a recursive - nested - hierachical data structure with the restriction of no cycles or alternate pathways. Python collections whose members are general objects, including collections, can be nested. The resulting structures *are* tree structures, if not more general directed graphs. They are quite commonly used in Python.

The common question -- "How do I flatten a list" -- is asking "How to I turn a list from a tree (or DAG, but not a cyclic graph*) into a sequence of leaf objects". The question illustrates what is missing - builtin functions or methods for nested collections. I already suggested that there *might* be a useful addition in this direction.

* A Python interpreter needs to take special measures to even display an infinitely recursive list without raising or even segfaulting. Most posted 'flatten' functions do not account for this possibility.

>>> l = [1]
>>> l.append(l)
>>> l
[1, [...]]


> Not only most languages don't implement trees in their standard
libraries

Typically, built-in collection type C has members of type M that does not include type C. Therefore a C instance cannot (directly) contain a C instance. The result is that people write a 'design pattern' to overcome the limitation and enable a C to indirectly include a C. Since this limitations does not exist in Python's generalized collections of objects, the pattern is unneeded in Python.

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to