Back to Course

Intermediate Python

0% Complete
0/0 Steps
Lesson 32 of 33
In Progress

Recap of Key Concepts Learned

Welcome to the “Recap of Key Concepts Learned” section of the Intermediate Python course! In this course, you have learned a wide range of intermediate-level concepts in Python, ranging from advanced data structures and algorithms to machine learning and data analysis.


One key concept that you learned was how to work with advanced data structures such as dictionaries, tuples, and sets. You learned how to manipulate these data structures, as well as how to use them to solve common problems in programming.

Another important concept was the use of NumPy and Pandas for data manipulation and analysis. You learned how to use these powerful libraries to load, manipulate, and visualize data, as well as how to use them to perform common tasks such as aggregation and filtering.

You also learned about the use of regular expressions for searching and manipulating text data, as well as the datetime module for working with dates and times.

In addition to these core concepts, you also learned about advanced programming techniques such as function decorators, lambda functions, closures, and the itertools module.

Finally, you learned about machine learning and data analysis with Scikit-learn, including how to use clustering and classification algorithms to build predictive models.


Overall, this course has provided you with a solid foundation in intermediate Python programming, and we hope that you are now well-equipped to tackle more advanced projects and challenges. Thank you for joining us, and we hope to see you in future courses!


To review these concepts, we will go through a series of exercises designed to test your understanding and apply what you have learned.

Create a dictionary with keys “A”, “B”, “C”, and values [1, 2, 3], [4, 5, 6], [7, 8, 9] respectively. Then, create a new dictionary with the same keys but with the values reversed, i.e. [3, 2, 1], [6, 5, 4], [9, 8, 7] respectively.

# Initialize the dictionary
d = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}

# Create the new dictionary by reversing the values in d
d_reversed = {k: v[::-1] for k, v in d.items()}

print(d_reversed)  # Output: {'A': [3, 2, 1], 'B': [6, 5, 4], 'C': [9, 8, 7]}

Create a tuple with elements “a”, “b”, “c”, “d”, “e”. Then, using a list comprehension, create a list with the elements of the tuple in reverse order.

# Initialize the tuple
t = ("a", "b", "c", "d", "e")

# Create the list with the elements of t in reverse order
l = [x for x in t[::-1]]

print(l)  # Output: ['e', 'd', 'c', 'b', 'a']

Create a set with elements 1, 2, 3, 4, 5. Then, using a set comprehension, create a new set with the elements of the original set that are even.

# Initialize the set
s = {1, 2, 3, 4, 5}

# Create the new set with the even elements of s
s_even = {x for x in s if x % 2 == 0}

print(s_even)  # Output: {2, 4}

Use a list comprehension to create a list of the first 10 square numbers (i.e. 1, 4, 9, 16, etc.).

# Create the list of square numbers
square_numbers = [x**2 for x in range(1, 11)]

print(square_numbers)  # Output: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Use a generator expression to create a generator that generates the first 10 square numbers (i.e. 1, 4, 9, 16, etc.).

# Create the generator
square_numbers_gen = (x**2 for x in range(1, 11))

print(square_numbers_gen)  # Output: <generator object <genexpr> at 0x7f91f0b9d8e8>

# To see the values generated by the generator, you can iterate over it
for x in square_numbers_gen:
    print(x)  # Output: 1, 4, 9, 16, 25, 36, 49, 64