Skip to main content
abarnert's user avatar
abarnert's user avatar
abarnert's user avatar
abarnert
  • Member for 5 years, 11 months
  • Last seen more than 5 years ago
About

Some people, when confronted with a problem, think "I know, I'll use itertools."

Now they have next(takewhile(not_, count())) problems.


Since I've been asked about this multiple times now:

It's a reference to "Now they have two problems" about regular expressions. next(takewhile(not_, count())) is guaranteed to give you 0, and pretty efficiently… but it's not exactly readable. Which is the joke. itertools does solve all your problems, but you don't always need to use it.

If you don't grasp the paradigm, go read David Beazley's presentations. Once you do: "I've got a CSV, and I want to group the rows by…" Pass a csv.reader to groupby. "I've got a bunch of values, and I want to take them 4 at a time and…" Use grouper from the recipes. "I've got a file, and I want to take each pair of adjacent lines and…" tee it, next one copy, and zip them. And so on.

But of course some problems have an even easier solution, and once you start thinking in terms of sequences of transformations on iterators, sometimes you'll miss the easier answer.

(The exact same thing happens with numpy, of course.)

Badges
This user doesn’t have any gold badges yet.
1
silver badge
2
bronze badges
15
Score
5
Posts
83
Posts %
9
Score
2
Posts
33
Posts %
5
Score
1
Posts
17
Posts %
4
Score
1
Posts
17
Posts %
4
Score
1
Posts
17
Posts %
3
Score
1
Posts
17
Posts %
Top posts