list comprehension question
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Wed May 6 21:35:12 EDT 2009
On Wed, 06 May 2009 09:48:51 -0400, J Kenneth King wrote:
> Emile van Sebille <emile at fenx.com> writes:
>
>> On 5/5/2009 9:15 AM J Kenneth King said...
>>
>>> List comprehensions can make a reader of your code apprehensive
>>> because it can read like a run-on sentence and thus be difficult to
>>> parse. The Python documentation discourages their use and I believe
>>> for good reason.
>>
>> Can you provide a link for this? I'd like to see specifically what's
>> being discouraged, as I'd be surprised to find routine usage frowned
>> upon.
>>
>> Emile
>
> http://docs.python.org/tutorial/datastructures.html#nested-list-
comprehensions
>
>
> "If you’ve got the stomach for it, list comprehensions can be nested.
> They are a powerful tool but – like all powerful tools – they need to be
> used carefully, if at all."
How does this discourage the use of list comprehensions? At most, it
warns that complicated list comps are tricky. Complicated *anything* are
tricky.
> and
>
> "In real world, you should prefer builtin functions to complex flow
> statements."
That's ridiculous. The example given is a special case. That's like
saying "Loops are hard, so in the real world, if you want a loop, find a
builtin function that does what you want instead."
What's the "builtin function" we're supposed to prefer over a "complex
flow statement" like this?
# split text into word fragments of length <= 3
sentence = "a sentence is a series of words"
new = [word[i:i+3] for word in sentence.split() for i in range(0, len(word), 3)]
--
Steven
More information about the Python-list
mailing list