6.6. Comprehension#

6.6.1. List Comprehension#

  • Unique to Python

  • Three variations

[ f(ele) for ele in sequence ]

[ f(ele) for ele in sequence if condition ]

[ f(ele) if condition else g(ele) for ele in sequence ]

[ f(ele) for ele in sequence if condition1 and condition2]

6.6.2. Tuple Comprehension#

  • Tuple Comprehension returns a generator

  • Generators generate one-time use values

( f(ele) for ele in sequence )

( f(ele) for ele in sequence if condition )

( f(ele) if condition else g(ele) for ele in sequence )

6.6.3. List Comprehension Exercises#

6.6.4. Exercise 1#

Re-write the following code to use List Comprehension

my_list = [1, 2, 3]
new_list = []
for ele in my_list:
    tmp = ele * ele
    new_list.append(tmp)
Hide code cell source
my_list = [1, 2, 3]
new_list = []
for ele in my_list:
    tmp = ele * ele
    new_list.append(tmp)
new_list = [ele*ele for ele in my_list]

6.6.5. Exercise 2#

Re-write the following code to use List Comprehension Multiply each number by 10

my_list = [1, 2, 3]
new_list = []
for ele in my_list:
    tmp = ele * 10
    new_list.append(tmp)
Hide code cell source
my_list = [1, 2, 3]
new_list = []
for ele in my_list:
    tmp = ele * 10
    new_list.append(tmp)
new_list = [ele*10 for ele in my_list]

6.6.6. Exercise 3#

Upper case each letter in animal variable

animal = 'buffalo'
Hide code cell source
animal = 'buffalo'
[char.upper() for char in animal]
['B', 'U', 'F', 'F', 'A', 'L', 'O']

6.6.7. Exercise 4#

Title each name in the student list

students = ['john', 'jane', 'doe']
Hide code cell source
students = ['john', 'jane', 'doe']
[student[0].upper()+student[1:] for student in students]
students = ['john', 'jane', 'doe']
print([student.title() for student in students])
['John', 'Jane', 'Doe']

6.6.8. Exercise 5#

Use list comprehension to get the Truthiness of each element in my_list

my_list = [0, '', []]
Hide code cell source
my_list = [0, '', []]
[bool(ele) for ele in my_list]
[False, False, False]

6.6.9. Exercise 6#

Convert each element of my_list to str using list comprehension

my_list = range(6)
Hide code cell source
my_list = range(6)
[str(element) for element in my_list]
['0', '1', '2', '3', '4', '5']

6.6.10. Exercise 7#

Use list comprehension to reduce a list of numbers to just even or odd

numbers = range(20)
Hide code cell source
numbers = range(20)
even = [number for number in numbers if number % 2 == 0 ]
odd = [number for number in numbers if number % 2 != 0 ]

6.6.11. Exercise 8#

Use list comprehension to modify a list of numbers such that evens are left as is and the odds are raised to the three power

numbers = range(10)
Hide code cell source
numbers = range(10)
[number if number % 2 == 0 else number**3 for number in range(10)]
[0, 1, 2, 27, 4, 125, 6, 343, 8, 729]

6.6.12. Exercise 9#

Use list comprehension to remove vowels from a sentence

sentence = 'I rEAlly want to gO to work'
Hide code cell source
sentence = 'I rEAlly want to gO to work'
''.join([char for char in sentence if char.lower() not in 'aeiou'])
' rlly wnt t g t wrk'