LangWart: Method congestion from mutate multiplicty
Rick Johnson
rantingrickjohnson at gmail.com
Mon Feb 11 23:55:28 EST 2013
On Monday, February 11, 2013 7:27:30 AM UTC-6, Chris Angelico wrote:
> So...
> flatten([None, 23, [1, 2, 3], (2, 3), ["spam", "ham"]])
>
> would return
>
> [None, 23, 1, 2, 3, (2, 3), "spam", "ham"]
>
> I think that's even more unexpected.
Why? Are you over-analyzing? Show me a result that /does/ make you happy.
Do you remember when i was talking about how i attempt to intuit interfaces before reading any docs? Well i have news for you Chris, what you are doing is NOT "intuiting" how flatten will work, what you are doing is "projecting" how flatten will work; these are two completely different concepts Chris.
The word "flatten" is too ambiguous to intuit the /exact/ "result". The only intuit-able attribute of flatten is that calling list.flatten() will result in a list that probably looks different than the current list. Intuition is your friend; not your own personal "clairvoyant side-kick"!
To learn the interface you need to initially "intuit", but then you need to test. Run a few example sequences and see what results you get, compare those results to what you /expected/ to get. If it works the way you expect, move on to the next topic, if not, dig deeper.
You can't procrastinate over this method forever because NEWSFLASH you will /never/ find a perfect flatten algorithm that will please /everyone/, so just pick the most logical and consistent, and MOVE ON!
Infinite recursion anyone?
while obj.repeat is True:
obj.lather()
obj.rinse()
obj.repeat = True
More information about the Python-list
mailing list