Sorry for the delay in answering.

Bill Mill wrote:
[cut]
1) you should special-case dictionaries: > >> x = [1, 2, [3, 4, 5, [[6, 7], 8]], 'abc', 9, [10, 11], {'test': 12}] > >> flatten(x) > >> x [1, 2, 3, 4, 5, 6, 7, 8, 'abc', 9, 10, 11, 'test']

OK, now it only handles lists and tuples
2) What's different about your flatten than those ASPN entries? Just
that it flattens in-place? I see a general-purpose flattener and a
flattening generator.

The flatten procedure by Ganel does excessive work, it appears, by doing one level of flattening per pass through the entire list. Initial non-iterable items are rechecked as long as any iterables remain in the list. It is also not an "in-place" routine.


The one by Rodrigues and the one by Rol is recursive (and the one by Yoo is admittedly complicated).

The one I presented is essentially the same as Fletcher's. Fletcher's does not actually run through all indices as I thought: as soon as it steps on an out-of-range index it exits. Fletcher's routine is a non-recursive version that runs in place that can be recommended if recursion is a problem.

I'll add a note to the ASPN pages.

/c

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to