[Python-ideas] Shuffled
Steven D'Aprano
steve at pearwood.info
Wed Sep 7 23:22:39 EDT 2016
On Wed, Sep 07, 2016 at 11:47:49PM -0300, Danilo J. S. Bellini wrote:
> Though I agree with the argument that inexperienced developers are
> [usually] worse, that's not the case here, unless anyone here is really
> trying to say the ones arguing for or against "shuffled" are inexperienced.
> These ad hominem won't bring us anywhere.
That is not what I said. Please be careful of accusing others of things
they didn't say.
It was Sven who made the claim that inexperienced developers are better
at seeing inconsistancies. I was responding specifically to that claim.
I'm not saying anything about the experience, or lack of, of either Sven
or Arek.
> No one seem to be arguing if "shuffled" is inconsistent, but the "shuffle"
> consistency is a subject that didn't reach consensus. And the point now
> seem to be whether "shuffled" is useful or not. If I understood correctly,
> that proposal is about writing code in a more functional style (or a
> expression-oriented programming style), with a pure function for shuffling.
>
> I think there are other related subjects that can be said about
> sorted/shuffled. For example: why a list? Why not a generator?
You cannot sort a sequence lazily. You have to sort the entire sequence
before you can be sure which item comes first. Making sorted() an
iterator by default doesn't give you any advantage: it still has to
sort the entire sequence before it can yield the first item.
> Something
> like random.choice is useful to get one single value, but if one just want
> to see a few random values from a large input without repeating the values,
> what's the best approach?
random.sample()
> Does that mean you expect Python to provide appended() [...] extended()
> > [...]
> >
> Doesn't the "+" operator do that?
Of course it does. But the "consistency" argument would be "why is
append a method not an operator? Why isn't + called appended?".
That's just spelling. It isn't that important.
> > [...] list.cleared()?
>
> Huh? OP is clearly talking about avoiding state, avoiding "in-place"
> operations. A clear list would be an empty list [].
Of course. We can see that. But again, that's "inconsistent":
* the in-place operation is spelled `list.clear()`
* the functional operation is spelled `[]`
There is nothing wrong with that. The value of consistency is grossly
exaggerated. Sometimes it really doesn't matter if similar operations
are spelled differently.
--
Steve
More information about the Python-ideas
mailing list