using complicated and tricky code where not warranted is both bad engineering and bad software citizenship to repurpose line from the first programming is not about being clever and obscure--it' about how clearly your program communicates its purpose orto quote from python' import this mottosimple is better than complex writing complicated comprehension code may be fun academic recreationbut it doesn' have place in programs that others will someday need to understand consequentlymy advice is to use simple for loops when getting started with pythonand comprehensions or map in isolated cases where they are easy to apply the "keep it simplerule applies here as alwayscode conciseness is much less important goal than code readability if you have to translate code to statements to understand itit should probably be statements in the first place in other wordsthe age-old acronym kiss still applieskeep it simple--followed either by word that is today too sexist (sir)or another that is too colorful for family-oriented book like this on the other handperformanceconcisenessexpressiveness howeverin this casethere is currently substantial performance advantage to the extra complexitybased on tests run under python todaymap calls can be twice as fast as equivalent for loopsand list comprehensions are often faster than map calls this speed difference can vary per usage pattern and pythonbut is generally due to the fact that map and list comprehensions run at language speed inside the interpreterwhich is often much faster than stepping through python for loop bytecode within the pvm in additionlist comprehensions offer code conciseness that' compelling and even warranted when that reduction in size doesn' also imply reduction in meaning for the next programmer moreovermany find the expressiveness of comprehensions to be powerful ally because map and list comprehensions are both expressionsthey also can show up syntactically in places that for loop statements cannotsuch as in the bodies of lambda functionswithin list and dictionary literalsand more because of thislist comprehensions and map calls are worth knowing and using for simpler kinds of iterationsespecially if your application' speed is an important consideration stillbecause for loops make logic more explicitthey are generally recommended on the grounds of simplicityand often make for more straightforward code when usedyou should try to keep your map calls and list comprehensions simplefor more complex tasksuse full statements instead list comprehensions and functional tools