Python Comprehensions & Generators Made Easy (PyCharm)
Ganesh Samarthyam
Posted on July 11, 2020
One of the features I love is Live Templates in PyCharm: With it, you can code super fast! They are incredibly useful for speeding up common tasks such as looping over (or generating from) a collection object.
In this brief blog, show how to use them in PyCharm (works for both Community or Professional editions)
Python Comprehensions & Generators 101
Comprehensions and generators can help write concise yet expressive code. Consider this loop:
small_words = []
for word in quip.split(" "):
if(len(word.upper()) <= 4):
small_words.append(word.upper())
print(small_words)
This is quite verbose.
Here is how it could be expressed with a list comprehension - which is quite readable as well:
small_words = [word.upper() for word in quip.split(" ") if len(word) <= 4]
print(small_words)
Here are the parts of the comprehension:
That's easy and nice, isn't it!
Live Templates in PyCharm
You can use Live Templates - the template code segments that you can fill - in PyCharm.
Here is the list of live templates. You can access it as PyCharm -> Preferences -> Editor -> Live Templates
.
Getting Started - Easy and Simple Live Templates
The live templates main
, iter
and itere
are easy and simple ones to get started with.
In live action in this YouTube Video.
It's repetition made easy!
Templates for List, Set, and Dictionary Comprehensions
This is where the fun begins - let it be list, set or dictionaries, comprehensions are easy with PyCharm. Just start typing comp
which stands for 'comprehension'. For list comprehension, type l
, so it's compl
. For adding an if condition, add an i
, so it becomes compli'. Nothing
compli`cated!
So goes comps
, compsi
, compd
and compdi
for set and dictionary comprehensions with optional if conditions.
List comprehension
That's how you process lists!
Set comprehension
That's how you deal with sets!
Dictionary comprehension
That's how you deal with dictionaries!
Generator comprehension
Generators create a sequence - we iterate over them one at a time. If you try to print a generator you'll get a generator object (not its content printed!). For example, if small_words is a generator, then print(small_words) will print cryptic reading one like - <generator object <genexpr> at 0x102c1b7c8>
. So convert to list, for example, before printing, like print(list(small_words))
.
Here is an example.
That's how you deal with generators!
Live Templates to Remember
-
main
- main check -
iter
/itere
- for loop -
compl
/compli
- list comprehension -
comps
/compsi
- set comprehension -
compd
/compdi
- dictionary comprehension -
compg
/compgi
- generators
Have fun playing around with comprehensions and generators in PyCharm. Check out for ~1 min PyCharm Tips & Tricks here.
Have fun coding!
Posted on July 11, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.