<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
  <url><loc>https://pythonlessonlab.com/</loc></url>
  <url><loc>https://pythonlessonlab.com/learn/</loc></url>
  <url><loc>https://pythonlessonlab.com/problems/</loc></url>
  <url><loc>https://pythonlessonlab.com/about/</loc></url>
  <url><loc>https://pythonlessonlab.com/contact/</loc></url>
  <url><loc>https://pythonlessonlab.com/privacy/</loc></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-history/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-history.jpg</video:thumbnail_loc><video:title>Python History: How It Started (1989–2008) | Lesson 00</video:title><video:description>Trace Python&#39;s beginnings, its name, and the arrival of Python 3.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/hSFKWtoE_FU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/hello-world/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/hello-world.jpg</video:thumbnail_loc><video:title>Python Hello World: Your First Program | Lesson 01</video:title><video:description>Run your first Python statements and recognize how Python displays output.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/wWIwt0hIE8E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/variables-and-types/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/variables-and-types.jpg</video:thumbnail_loc><video:title>Python Variables and Data Types Explained | Lesson 02</video:title><video:description>Store values in variables and distinguish common Python data types.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/HeUk4WBQe0U</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/lists/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/lists.jpg</video:thumbnail_loc><video:title>Python Lists: Index, Change, and Append | Lesson 03</video:title><video:description>Create a list, access its items, and change its contents.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/7Ld1oCS14K8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/basic-operators/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/basic-operators.jpg</video:thumbnail_loc><video:title>Python Operators: Arithmetic and Comparisons | Lesson 04</video:title><video:description>Use Python operators to calculate values and compare results.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/-ior25w1Q34</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/string-formatting/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/string-formatting.jpg</video:thumbnail_loc><video:title>Python f-Strings: Format Text and Numbers | Lesson 05</video:title><video:description>Build readable text that includes variables and formatted numbers.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/QtggirjET34</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/basic-string-operations/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/basic-string-operations.jpg</video:thumbnail_loc><video:title>Python String Methods and Slicing | Lesson 06</video:title><video:description>Read characters and slices from strings and apply common string methods.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/VHlZzrKOsSk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/conditions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/conditions.jpg</video:thumbnail_loc><video:title>Python if, elif, else Conditions | Lesson 07</video:title><video:description>Use if, elif, and else in order: Python runs the first true branch and skips the rest. Compare values with ==, add colons, and indent each block.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/F1c4TqCIjH0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/loops/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/loops.jpg</video:thumbnail_loc><video:title>Python for and while Loops | Lesson 08</video:title><video:description>Repeat work with for and while loops and recognize when a loop stops.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/62XPceXqNlU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/functions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/functions.jpg</video:thumbnail_loc><video:title>Python Functions: Parameters and Return | Lesson 09</video:title><video:description>Define reusable code with parameters and return a result.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/hSJ-4shopTc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/classes-and-objects/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/classes-and-objects.jpg</video:thumbnail_loc><video:title>Python Classes and Objects: A First Example | Lesson 10</video:title><video:description>Create a simple class and give each instance its own data.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/22cl8xk-paE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dictionaries/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dictionaries.jpg</video:thumbnail_loc><video:title>Python Dictionaries: Keys, Values, and get() | Lesson 11</video:title><video:description>Store related values by key and retrieve or update them.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/944cyElWbXo</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/modules-and-packages/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/modules-and-packages.jpg</video:thumbnail_loc><video:title>Python Modules and Packages: import math | Lesson 12</video:title><video:description>Import a module and use a function from Python&#39;s standard library.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/GYI4HHUMFek</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/input-and-output/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/input-and-output.jpg</video:thumbnail_loc><video:title>Python input() and Output: Convert Text Safely | Lesson 13</video:title><video:description>Understand text input, convert it when needed, and present useful output.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/uZmv2hoSp2g</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-tip-calculator/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-tip-calculator.jpg</video:thumbnail_loc><video:title>Build a Python Tip Calculator | Practice Project 14</video:title><video:description>Combine functions, arithmetic, and formatted output to split a restaurant bill.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/z8fi22vdVQk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-number-guessing/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-number-guessing.jpg</video:thumbnail_loc><video:title>Build a Python Number Guessing Game | Project 15</video:title><video:description>Use comparisons, a function, and a loop to evaluate guesses until the answer is found.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Ds3UpsPr0m8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-text-analyzer/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-text-analyzer.jpg</video:thumbnail_loc><video:title>Build a Python Text Analyzer | Practice Project 16</video:title><video:description>Combine string methods, a loop, and a dictionary to summarize a sentence.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/pihmMJVRFhI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/tuples-and-sets/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/tuples-and-sets.jpg</video:thumbnail_loc><video:title>Python Tuples and Sets Explained | Lesson 17</video:title><video:description>Choose a tuple for a fixed group and a set for distinct values.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/gQ44cfd_D4o</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/exceptions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/exceptions.jpg</video:thumbnail_loc><video:title>Python Exceptions: try and except | Lesson 18</video:title><video:description>Catch expected runtime errors and return useful messages without hiding unrelated bugs.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/KVlKrGeOMWk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/files/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/files.jpg</video:thumbnail_loc><video:title>Read and Write Files in Python | Lesson 19</video:title><video:description>Write and read a UTF-8 text file with a context manager.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/wLnHtcd0ceI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/installing-python-and-venv/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/installing-python-and-venv.jpg</video:thumbnail_loc><video:title>Install Python and Create a Virtual Environment | Lesson 20</video:title><video:description>Set up a local Python installation and understand how a virtual environment isolates project packages.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/5ml4T5390pA</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/list-comprehensions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/list-comprehensions.jpg</video:thumbnail_loc><video:title>Python List Comprehensions: Build and Filter a List</video:title><video:description>Build a new list from an iterable, add a filter, and explain the output before running it.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/wZ1y0aICv50</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/function-arguments-and-scope/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/function-arguments-and-scope.jpg</video:thumbnail_loc><video:title>Python Function Arguments, Return Values, and Scope</video:title><video:description>Pass values into a function, return a result, and distinguish local names from names in the caller.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/4st1GxuBM9c</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/json-and-csv/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/json-and-csv.jpg</video:thumbnail_loc><video:title>Read and Write JSON and CSV in Python</video:title><video:description>Serialize and parse JSON, read CSV rows by header, and convert text fields deliberately.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/wD83KSB1uss</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/enumerate-and-zip/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/enumerate-and-zip.jpg</video:thumbnail_loc><video:title>Python enumerate() and zip(): Number and Pair Rows</video:title><video:description>Pair related values and number them without manually managing an index.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/RQ96_ZGPHUE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dictionary-and-set-comprehensions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dictionary-and-set-comprehensions.jpg</video:thumbnail_loc><video:title>Python Dictionary and Set Comprehensions | Real Examples</video:title><video:description>Build key/value mappings and unique-value sets from iterable data with readable comprehensions.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/BOp-t--1JcA</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/testing-python-functions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/testing-python-functions.jpg</video:thumbnail_loc><video:title>Test Python Functions with Assertions and unittest</video:title><video:description>Write repeatable tests that compare actual results with expected results and cover boundaries.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/dOT6PgEu7-g</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dates-and-timedeltas/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dates-and-timedeltas.jpg</video:thumbnail_loc><video:title>Python Dates and Timedeltas | Calculate Dates Correctly</video:title><video:description>Parse a calendar date, shift it by a number of days, and produce a predictable ISO date string.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/cnfmneGng9w</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-csv-expense-tracker/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-csv-expense-tracker.jpg</video:thumbnail_loc><video:title>Build a Python CSV Expense Tracker | Mini Project</video:title><video:description>Read CSV rows in memory and calculate reliable expense totals by category.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/A5l-ok68lrI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-contact-book/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-contact-book.jpg</video:thumbnail_loc><video:title>Build a Python Contact Book | Mini Project</video:title><video:description>Store, find, and update contacts with a dictionary and predictable name matching.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/bBvf1IgZLY8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/sorting-with-key/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/sorting-with-key.jpg</video:thumbnail_loc><video:title>Python sorted() with key: Sort Products by Price</video:title><video:description>Use sorted(products, key=lambda item: item[&#39;price&#39;]) to return a new price-ordered list. Add reverse=True for descending order; equal-price items keep their input order.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/q8m9bkBqwwQ</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pathlib-file-paths/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pathlib-file-paths.jpg</video:thumbnail_loc><video:title>Python pathlib: Fix Missing Folders and Save Text</video:title><video:description>Build and inspect paths with pathlib, create missing parent folders, and read or write UTF-8 text safely.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/KxxcIFVNrxI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/regular-expressions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/regular-expressions.jpg</video:thumbnail_loc><video:title>Python Regex: Find Exact Codes Without Partial Matches</video:title><video:description>Use re.search() to get the first match or None, re.findall() to get all non-overlapping matches, and re.fullmatch() to validate an entire string.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/XjXjHP6EkcM</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/iterators-and-generators/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/iterators-and-generators.jpg</video:thumbnail_loc><video:title>Python Generators: Why the Second Pass Is Empty</video:title><video:description>Explain one-pass iteration and write a generator that yields values as they are requested.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/G4H6x2JA5To</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dataclasses/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dataclasses.jpg</video:thumbnail_loc><video:title>Python dataclasses: Fix Mutable List Defaults</video:title><video:description>Use @dataclass to generate an initializer, repr, and equality from annotated fields. Convert a record with asdict(), and use default_factory for each instance&#39;s list.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/H-YSJRR5LR4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/collections-counter-defaultdict/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/collections-counter-defaultdict.jpg</video:thumbnail_loc><video:title>Python Counter and defaultdict: Count and Group Data</video:title><video:description>Count repeated values and group records without writing fragile missing-key checks.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/3nhSMS9nj5E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/type-hints-for-functions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/type-hints-for-functions.jpg</video:thumbnail_loc><video:title>Python Type Hints: What They Check (and What They Don&#39;t)</video:title><video:description>Annotate function inputs and return values and explain what annotations do and do not enforce.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/1FMKdNfZk74</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/decorators/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/decorators.jpg</video:thumbnail_loc><video:title>Python Decorators: Wrap Functions Without Losing Results</video:title><video:description>Wrap a callable to add behavior while forwarding its arguments and result, keeping metadata, and tracking state per decorated function.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/QLfEG7CIgJ8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/context-managers/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/context-managers.jpg</video:thumbnail_loc><video:title>Python Context Managers: Guaranteed Cleanup with with</video:title><video:description>Use with to bound resource lifetime and create a context manager that releases a file even when the body raises.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/BDGn-hmDL6Q</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/itertools-for-data-pipelines/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/itertools-for-data-pipelines.jpg</video:thumbnail_loc><video:title>Python itertools: Build Data Pipelines Without Surprises</video:title><video:description>Compose iterator tools to stream data, bound consumption, compute running totals, and understand consecutive grouping.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/IacxmwHVzVE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/recursion-and-call-stack/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/recursion-and-call-stack.jpg</video:thumbnail_loc><video:title>Python Recursion and the Call Stack: Find the Base Case</video:title><video:description>Trace recursive calls and write a function that stops correctly for empty and nested input.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/8C1GVN3le3g</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/structural-pattern-matching/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/structural-pattern-matching.jpg</video:thumbnail_loc><video:title>Python match case: Structural Pattern Matching Explained</video:title><video:description>Choose the first matching structural case and capture values from small event dictionaries.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/kaT6HN8lxgU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/logging-in-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/logging-in-python.jpg</video:thumbnail_loc><video:title>Python Logging: Replace Print with Useful Logs</video:title><video:description>Record messages at appropriate levels and filter them into a deterministic in-memory report.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/etsLsJ7O-f4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/asyncio-basics/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/asyncio-basics.jpg</video:thumbnail_loc><video:title>Python asyncio Basics: Tasks, await, and Concurrent I/O</video:title><video:description>Write a coroutine and use asyncio.gather to collect independent simulated I/O results in input order.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Dl0eJ2vKqbU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-log-analyzer/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-log-analyzer.jpg</video:thumbnail_loc><video:title>Build a Python Log Analyzer: Parse and Count Events</video:title><video:description>Turn multiline log text into severity counts, error messages, and a count of malformed rows.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/fj7NO3BG6JQ</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-flashcard-quiz/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-flashcard-quiz.jpg</video:thumbnail_loc><video:title>Build a Python Flashcard Quiz with a Score</video:title><video:description>Grade flashcard answers, report a score, and review missed questions without hiding a length mismatch.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/kV7SXfvwua8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/truthiness-none-and-identity/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/truthiness-none-and-identity.jpg</video:thumbnail_loc><video:title>Python Truthiness, None, and Identity: Avoid Falsey Bugs</video:title><video:description>Choose between a truth test, equality, and identity without treating valid zero values as missing.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/9MWR9vooV1c</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/sequence-slicing-and-negative-steps/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/sequence-slicing-and-negative-steps.jpg</video:thumbnail_loc><video:title>Python Slices and Negative Steps: Reverse and Window Sequences</video:title><video:description>Predict and use sequence slices, including omitted bounds, negative indices, and a negative step.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/xqc8Wv30kwY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/shallow-vs-deep-copy/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/shallow-vs-deep-copy.jpg</video:thumbnail_loc><video:title>Shallow vs Deep Copy in Python: Stop Changing the Original</video:title><video:description>Identify shared nested references and choose a copy depth that protects the original data.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/18wN5bk89UI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/args-kwargs-and-unpacking/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/args-kwargs-and-unpacking.jpg</video:thumbnail_loc><video:title>Python *args and **kwargs: Forward Arguments Correctly</video:title><video:description>Distinguish variable positional arguments, named metadata, and a keyword-only option in one function.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/QZD8sn-CGhU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/custom-exceptions-and-validation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/custom-exceptions-and-validation.jpg</video:thumbnail_loc><video:title>Custom Exceptions in Python: Validate and Raise Clearly</video:title><video:description>Raise a meaningful exception type for invalid input while preserving the underlying conversion cause.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/n6hBjSwJ8ak</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/reading-tracebacks-and-debugging/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/reading-tracebacks-and-debugging.jpg</video:thumbnail_loc><video:title>Read Python Tracebacks: Find the Real Error</video:title><video:description>Use traceback frames and exception causes to locate a bug and add useful context at the correct layer.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/n9A8fyiMLew</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/decimal-for-money/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/decimal-for-money.jpg</video:thumbnail_loc><video:title>Decimal in Python: Calculate Money Without Float Surprises</video:title><video:description>Represent decimal money from text and round a final amount to cents with an explicit rule.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/hVbi2e_WmHE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/deque-queues-and-stacks/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/deque-queues-and-stacks.jpg</video:thumbnail_loc><video:title>Python deque: Queue and Stack Patterns That Scale</video:title><video:description>Choose FIFO or LIFO deliberately and serve queued items efficiently without changing the caller&#39;s list.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/YgBxoHdcJNY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/heapq-priority-queues/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/heapq-priority-queues.jpg</video:thumbnail_loc><video:title>Python heapq: Build a Priority Queue</video:title><video:description>Use heapq and an insertion counter to process lower numeric priorities first while preserving ties.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/s6NLKJmKkgE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/bisect-binary-search/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/bisect-binary-search.jpg</video:thumbnail_loc><video:title>Python bisect: Fast Search in Sorted Lists</video:title><video:description>Use bisect_left on a sorted sequence to locate an insertion point even when the value is absent.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/i7qj1foxVeU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/lru-cache-and-memoization/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/lru-cache-and-memoization.jpg</video:thumbnail_loc><video:title>Python lru_cache: Memoize Expensive Calls</video:title><video:description>Use functools.lru_cache on a deterministic function and verify both results and cache reuse.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/UsIH4ne5QUw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/unicode-bytes-and-encodings/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/unicode-bytes-and-encodings.jpg</video:thumbnail_loc><video:title>Unicode and Bytes in Python: Fix Encoding Errors</video:title><video:description>Keep str and bytes distinct and perform an explicit UTF-8 round trip without changing the text.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Q_SLdTr1_4g</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/time-zones-with-zoneinfo/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/time-zones-with-zoneinfo.jpg</video:thumbnail_loc><video:title>Time Zones with zoneinfo in Python: Keep Times Aware</video:title><video:description>Convert an aware UTC instant to a named local zone and observe daylight saving changes.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/5A2Ykq6HIXg</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/inheritance-vs-composition/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/inheritance-vs-composition.jpg</video:thumbnail_loc><video:title>Inheritance vs Composition in Python: Reuse Behavior Safely</video:title><video:description>Build a service around an injected sender object so its behavior can change without subclassing the service.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/mq6fDR-gZA0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/properties-and-validation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/properties-and-validation.jpg</video:thumbnail_loc><video:title>Python Properties: Validate Attributes Without Breaking APIs</video:title><video:description>Protect an object&#39;s state with a property setter and compute a read-only derived value.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/ShAjAPS4_gQ</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/environment-variables-and-configuration/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/environment-variables-and-configuration.jpg</video:thumbnail_loc><video:title>Python Environment Variables: Safe Configuration</video:title><video:description>Convert string-valued environment settings into a validated configuration with explicit defaults.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/rRxHSMeykv0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/http-apis-with-urllib/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/http-apis-with-urllib.jpg</video:thumbnail_loc><video:title>Fetch HTTP APIs with urllib in Python: Parse Responses Safely</video:title><video:description>Decode a JSON response through an injected opener and validate its shape without requiring a live API.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/684uhZpDDfk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/special-methods-repr-eq-len/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/special-methods-repr-eq-len.jpg</video:thumbnail_loc><video:title>Python Special Methods: repr, eq, and len</video:title><video:description>Implement three special methods with clear value semantics and handle unsupported comparisons correctly.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/mnWZPR5yVgw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/mocking-dependencies-in-tests/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/mocking-dependencies-in-tests.jpg</video:thumbnail_loc><video:title>Mock Dependencies in Python Tests: Isolate Behavior</video:title><video:description>Write a function with an injected dependency and test its return value and interaction without external I/O.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/MeVvy_iiPEw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/argparse-command-line-tools/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/argparse-command-line-tools.jpg</video:thumbnail_loc><video:title>argparse in Python: Build a Useful CLI</video:title><video:description>Define a repeatable argument parser for a report command and validate its parsed options.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/72tsgsSQNBI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/floating-point-comparisons-math-isclose/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/floating-point-comparisons-math-isclose.jpg</video:thumbnail_loc><video:title>Compare Python Floats with math.isclose: Tolerances That Matter</video:title><video:description>Use explicit numerical tolerances for approximate float results, including comparisons near zero.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/uBqgibcb48Y</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/csv-dictreader-and-row-validation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/csv-dictreader-and-row-validation.jpg</video:thumbnail_loc><video:title>Read CSV Rows with DictReader and Validate Missing Data</video:title><video:description>Read CSV by field name and validate its header, text, and numeric fields before using a row.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/0wO5u_XS9MY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/json-lines-streaming/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/json-lines-streaming.jpg</video:thumbnail_loc><video:title>Process JSON Lines in Python Without Loading Every Record</video:title><video:description>Distinguish one JSON document from line-delimited records and validate each decoded object.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/wFrk5Uzs4jU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/statistics-mean-median-outliers/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/statistics-mean-median-outliers.jpg</video:thumbnail_loc><video:title>Mean, Median, and Outliers in Python: Choose the Right Summary</video:title><video:description>Calculate mean and median and explain why an extreme value affects them differently.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/x-LojYDgyTM</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/text-normalization-unicodedata/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/text-normalization-unicodedata.jpg</video:thumbnail_loc><video:title>Normalize Unicode Text in Python Before Comparing Strings</video:title><video:description>Create a documented comparison key using Unicode NFC normalization and casefold.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/IXFJsNp-SoU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/enums-for-states/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/enums-for-states.jpg</video:thumbnail_loc><video:title>Use Python Enums for Valid States Instead of Magic Strings</video:title><video:description>Represent a small workflow with Enum members and convert untrusted text at its boundary.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/hUVZjdwelfA</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/closures-and-nonlocal/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/closures-and-nonlocal.jpg</video:thumbnail_loc><video:title>Python Closures and nonlocal: Preserve State Deliberately</video:title><video:description>Return a closure that remembers state and use nonlocal only when rebinding that state.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/hQMVw4k1kYc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/classmethods-and-staticmethods/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/classmethods-and-staticmethods.jpg</video:thumbnail_loc><video:title>Python classmethod vs staticmethod: Choose by Responsibility</video:title><video:description>Use a classmethod for an alternative constructor and a staticmethod for class-related validation without instance state.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/cR2EDQavf7Y</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/exception-chaining/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/exception-chaining.jpg</video:thumbnail_loc><video:title>Python Exception Chaining: Preserve the Original Cause</video:title><video:description>Raise a domain-specific error from a lower-level exception without losing the original cause.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/l3fSZJ0glsI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/unittest-fixtures-and-subtests/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/unittest-fixtures-and-subtests.jpg</video:thumbnail_loc><video:title>Python unittest Fixtures and subTest: Test Multiple Cases Clearly</video:title><video:description>Use setUp for fresh test data and subTest to label multiple inputs within a unittest method.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/LDdzR3tx5fk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/urlparse-and-query-parameters/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/urlparse-and-query-parameters.jpg</video:thumbnail_loc><video:title>Parse URLs and Query Parameters Safely with urllib.parse</video:title><video:description>Replace one URL query parameter without losing existing parameters or the fragment.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/sz29AeZn6HE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/html-escaping-safe-output/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/html-escaping-safe-output.jpg</video:thumbnail_loc><video:title>Escape HTML in Python: Render User Text as Text</video:title><video:description>Render untrusted text as visible HTML text without treating its angle brackets as markup.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/PKvFeSugaw0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/hashlib-content-checksums/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/hashlib-content-checksums.jpg</video:thumbnail_loc><video:title>Verify File Content with Python hashlib Checksums</video:title><video:description>Calculate a deterministic SHA-256 checksum for text and detect when its content changes.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/V9HBtGCr0w8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/configparser-ini-files/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/configparser-ini-files.jpg</video:thumbnail_loc><video:title>Read INI Configuration with Python configparser</video:title><video:description>Parse a small INI configuration and return typed, validated job settings.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/gpSklk-Z2DU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/zipfile-archives/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/zipfile-archives.jpg</video:thumbnail_loc><video:title>Create and Inspect ZIP Archives with Python zipfile</video:title><video:description>Create a ZIP archive from simple named text entries and inspect its contents without extraction.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/DEg6AwS4u2I</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-inventory-reorder-planner/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-inventory-reorder-planner.jpg</video:thumbnail_loc><video:title>Build a Python Inventory Reorder Planner with Tests</video:title><video:description>Turn validated stock records into a stable, explainable reorder plan without changing the source records.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/KB92NDSCTNQ</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-booking-conflict-detector/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-booking-conflict-detector.jpg</video:thumbnail_loc><video:title>Build a Python Booking Conflict Detector</video:title><video:description>Detect overlapping bookings with a half-open time rule and return conflict pairs in input order.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/rd8YdWSzTLQ</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-csv-import-validator/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-csv-import-validator.jpg</video:thumbnail_loc><video:title>Build a Python CSV Import Validator with Error Reports</video:title><video:description>Validate an entire CSV import and return accepted records alongside deterministic row-specific errors.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/mD8hQrvfB6Y</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-archive-manifest-verifier/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-archive-manifest-verifier.jpg</video:thumbnail_loc><video:title>Build a Python Archive Manifest Verifier</video:title><video:description>Verify a small in-memory ZIP against an expected manifest without writing archive members to disk.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/rsojtRdOatE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-offline-web-crawler/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-offline-web-crawler.jpg</video:thumbnail_loc><video:title>Build an Offline Python Web Crawler on Fixture Pages</video:title><video:description>Traverse an in-memory graph of HTML page fixtures in stable breadth-first order without network requests.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Hfr-u_UPODc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/sqlite3-parameterized-queries/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/sqlite3-parameterized-queries.jpg</video:thumbnail_loc><video:title>SQLite Parameterized Queries and Transactions in Python</video:title><video:description>Use SQLite placeholders for values and understand when a transaction commits or rolls back.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/bAgaCqMGViI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/secrets-secure-tokens/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/secrets-secure-tokens.jpg</video:thumbnail_loc><video:title>Generate Secure Random Tokens with Python secrets</video:title><video:description>Create unpredictable URL-safe tokens with an explicit minimum random-byte requirement.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/rSegZaCfYWI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/random-reproducible-simulations/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/random-reproducible-simulations.jpg</video:thumbnail_loc><video:title>Reproducible Simulations with Python random.Random</video:title><video:description>Run a repeatable simulation with an independent random generator and validated trial count.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/V_YRD7TXZnU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/collections-chainmap-layered-config/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/collections-chainmap-layered-config.jpg</video:thumbnail_loc><video:title>Layer Configuration with Python collections.ChainMap</video:title><video:description>Build a shallow configuration snapshot with explicit precedence across three mappings.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/iPntiei6WEw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/tempfile-atomic-writes/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/tempfile-atomic-writes.jpg</video:thumbnail_loc><video:title>Atomic File Writes with tempfile and os.replace in Python</video:title><video:description>Replace a file only after a complete new value has been written to a temporary file.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/mhhhAheBhP8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/xml-elementtree/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/xml-elementtree.jpg</video:thumbnail_loc><video:title>Parse and Build XML with Python ElementTree</video:title><video:description>Use ElementTree to parse trusted small XML and create escaped XML elements.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/qe3kgw8IZ9g</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/difflib-text-diffs/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/difflib-text-diffs.jpg</video:thumbnail_loc><video:title>Compare Text and Produce Unified Diffs with Python difflib</video:title><video:description>Create a unified diff for two text versions with stable labels and preserved line endings.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/3QCUB0C0h2Q</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/fractions-exact-ratios/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/fractions-exact-ratios.jpg</video:thumbnail_loc><video:title>Exact Ratios with Python Fraction</video:title><video:description>Use Fraction for exact rational ratios and reject ambiguous float input.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Wu3wDui2bo8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/ipaddress-network-validation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/ipaddress-network-validation.jpg</video:thumbnail_loc><video:title>Validate IP Addresses and Networks with Python ipaddress</video:title><video:description>Parse addresses and CIDR networks, then decide membership with ipaddress rather than text matching.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/__dgfHNzcEc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/shutil-copy-move/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/shutil-copy-move.jpg</video:thumbnail_loc><video:title>Copy and Move Files Safely with Python shutil</video:title><video:description>Copy a file without deleting its source, then move a file with explicit collision handling.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/TrpHuUcdZS4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/functools-partial-callbacks/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/functools-partial-callbacks.jpg</video:thumbnail_loc><video:title>Configure Callbacks with Python functools.partial</video:title><video:description>Build a callable with selected arguments fixed while keeping other arguments open.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/3UuJ9StWKJo</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/typing-protocols/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/typing-protocols.jpg</video:thumbnail_loc><video:title>Structural Interfaces with Python typing.Protocol</video:title><video:description>Use a Protocol to describe interchangeable objects and understand what runtime checks do and do not prove.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/91Xsqivlb2A</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/inspect-signatures-and-binding/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/inspect-signatures-and-binding.jpg</video:thumbnail_loc><video:title>Inspect Python Function Signatures and Bind Arguments</video:title><video:description>Use inspect.signature and bind to validate a proposed function call without running the function.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/GZcMRnwOrM0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/ast-literal-eval-vs-eval/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/ast-literal-eval-vs-eval.jpg</video:thumbnail_loc><video:title>Parse Python Literals Safely with ast.literal_eval</video:title><video:description>Use ast.literal_eval for literal syntax while enforcing an application-specific shape and size limit.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/q-kbC2tJ5CY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/topological-sort-dependencies/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/topological-sort-dependencies.jpg</video:thumbnail_loc><video:title>Topological Sort for Task Dependencies in Python</video:title><video:description>Return tasks in an order that places every prerequisite before its dependent task.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/__fxBlxJIEI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/email-message-parse-build/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/email-message-parse-build.jpg</video:thumbnail_loc><video:title>Build and Parse Email Messages Offline with Python</video:title><video:description>Construct a plain-text EmailMessage and parse its bytes while keeping transport separate.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/IIFsnCOmVdU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/base64-binary-text/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/base64-binary-text.jpg</video:thumbnail_loc><video:title>Encode Binary Data with Python base64</video:title><video:description>Convert text to bytes before Base64 encoding and validate decoded input before using it.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/unQs9PIEI6M</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/hmac-authenticated-messages/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/hmac-authenticated-messages.jpg</video:thumbnail_loc><video:title>Authenticate Messages with Python hmac</video:title><video:description>Sign a byte message with HMAC-SHA256 and verify it using a shared secret key.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/pdV40fBX3Yc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/uuid-stable-identifiers/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/uuid-stable-identifiers.jpg</video:thumbnail_loc><video:title>Create Stable and Random UUIDs in Python</video:title><video:description>Build a reproducible UUID from a namespace and normalized name, and distinguish it from a random UUID.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/qaflL1gwkao</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/gzip-compressed-data/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/gzip-compressed-data.jpg</video:thumbnail_loc><video:title>Compress Text and Bytes with Python gzip</video:title><video:description>Compress UTF-8 text into gzip bytes and recover the original text.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/5jA7WjxBPRA</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/struct-binary-records/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/struct-binary-records.jpg</video:thumbnail_loc><video:title>Pack Binary Records with Python struct</video:title><video:description>Pack an unsigned identifier and status byte into a stable three-byte record.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/q1msu9AOtbk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/io-stringio-text-streams/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/io-stringio-text-streams.jpg</video:thumbnail_loc><video:title>Test Text Streams with Python StringIO</video:title><video:description>Pass a StringIO stream into a function and rewind it before a second read.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/N2SRpdvlm-Q</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/tomllib-read-config/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/tomllib-read-config.jpg</video:thumbnail_loc><video:title>Read TOML Configuration with Python tomllib</video:title><video:description>Load a TOML configuration string and validate a required positive integer setting.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/3xt9Sbil1ZI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/glob-file-patterns/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/glob-file-patterns.jpg</video:thumbnail_loc><video:title>Find Files with Python glob and fnmatch</video:title><video:description>Select matching file names from a known list using fnmatchcase and deterministic sorting.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/znE8ayAK42M</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/timeit-benchmarking/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/timeit-benchmarking.jpg</video:thumbnail_loc><video:title>Benchmark Tiny Python Functions with timeit</video:title><video:description>Compute a per-call benchmark from repeated timeit runs without claiming universal speed.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/iAikyQIw3fA</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/graph-breadth-first-search/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/graph-breadth-first-search.jpg</video:thumbnail_loc><video:title>Find a Shortest Unweighted Path with BFS</video:title><video:description>Return a shortest path in an unweighted adjacency-list graph using a FIFO queue.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/bUZ6wCWYtXE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/graph-depth-first-cycle-detection/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/graph-depth-first-cycle-detection.jpg</video:thumbnail_loc><video:title>Detect Directed Graph Cycles with DFS</video:title><video:description>Detect whether a directed adjacency-list graph contains a cycle.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/ViiJt2WyfxM</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dynamic-programming-coin-change/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dynamic-programming-coin-change.jpg</video:thumbnail_loc><video:title>Solve Coin Change with Dynamic Programming</video:title><video:description>Return the minimum number of positive-denomination coins for a target amount, or None if unreachable.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Ux3MBGRVR7w</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/sliding-window-moving-average/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/sliding-window-moving-average.jpg</video:thumbnail_loc><video:title>Compute a Moving Average with a Sliding Window</video:title><video:description>Return every fixed-size moving average with one pass and a running sum.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/4_D2nNVkXYE</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/union-find-connected-components/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/union-find-connected-components.jpg</video:thumbnail_loc><video:title>Count Connected Components with Union-Find</video:title><video:description>Count connected components in an undirected graph using a disjoint-set structure.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/573O51_Oi7w</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/prefix-sums-range-queries/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/prefix-sums-range-queries.jpg</video:thumbnail_loc><video:title>Answer Range Sum Queries with Prefix Sums</video:title><video:description>Build prefix totals and compute sums for half-open index ranges.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/ahedUIpli-E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/regex-capture-groups-and-substitution/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/regex-capture-groups-and-substitution.jpg</video:thumbnail_loc><video:title>Capture and Replace Text with Python Regex</video:title><video:description>Use named capture groups and a re.sub callback to transform complete order codes without changing unrelated text.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/8sU4iknIunw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dataclass-post-init-validation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dataclass-post-init-validation.jpg</video:thumbnail_loc><video:title>Validate Dataclasses with __post_init__</video:title><video:description>Reject reversed range bounds and calculate a derived span immediately after a generated dataclass initializer runs.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/KljtWebY6A8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/asyncio-taskgroup-and-cancellation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/asyncio-taskgroup-and-cancellation.jpg</video:thumbnail_loc><video:title>Manage Async Tasks with TaskGroup and Cancellation</video:title><video:description>Use asyncio.TaskGroup to wait for related tasks, retrieve results in input order, and understand sibling cancellation after failure.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/C5W_G5P0Egk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dictionary-merge-conflict-policies/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dictionary-merge-conflict-policies.jpg</video:thumbnail_loc><video:title>Merge Dictionaries and Handle Duplicate Keys</video:title><video:description>Merge dictionaries while making duplicate-key behavior explicit and leaving inputs unchanged.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/TwodKIsNhyk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/set-operations-for-comparing-groups/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/set-operations-for-comparing-groups.jpg</video:thumbnail_loc><video:title>Compare Groups with Python Set Operations</video:title><video:description>Compare two groups with union, intersection, and difference while returning deterministic sorted results.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/xYDPerDhSug</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/nested-json-safe-extraction/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/nested-json-safe-extraction.jpg</video:thumbnail_loc><video:title>Read Nested JSON with Explicit Missing-Field Rules</video:title><video:description>Extract a city from nested JSON data while distinguishing a missing optional value from an invalid object shape.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/iVXXpCho_nU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/csv-quoting-and-dialects/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/csv-quoting-and-dialects.jpg</video:thumbnail_loc><video:title>Read and Write CSV with Quoting and Dialects</video:title><video:description>Read and write CSV records containing commas and quotation marks without splitting lines manually.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/NVkqXsZEzNU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/custom-json-encoding-and-decoding/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/custom-json-encoding-and-decoding.jpg</video:thumbnail_loc><video:title>Serialize Datetime and Decimal Values to JSON</video:title><video:description>Serialize datetime and Decimal values to JSON with an explicit representation and reject unsupported types.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/4iu6x4NMd6E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-gradebook-report/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-gradebook-report.jpg</video:thumbnail_loc><video:title>Project: Build a Gradebook Report</video:title><video:description>Build a small gradebook report from CSV data with validated scores, averages, and deterministic ranking.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/GEWF-rTeUhY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/command-line-output-and-exit-codes/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/command-line-output-and-exit-codes.jpg</video:thumbnail_loc><video:title>Write Clear CLI Output and Exit Codes</video:title><video:description>Separate successful CLI output from error diagnostics and return meaningful exit codes.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/3LgTyF5iwAI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/shlex-parse-command-input/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/shlex-parse-command-input.jpg</video:thumbnail_loc><video:title>Parse Quoted Commands with Python shlex</video:title><video:description>Parse a small command line while preserving quoted arguments and rejecting malformed input.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/u444mBBG_84</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-command-menu/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-command-menu.jpg</video:thumbnail_loc><video:title>Build a Safe Python Text Command Menu</video:title><video:description>Parse and execute add, remove, and show commands against an in-memory inventory.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/clTihakau8U</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/functools-singledispatch/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/functools-singledispatch.jpg</video:thumbnail_loc><video:title>Dispatch by Type with functools.singledispatch</video:title><video:description>Register type-specific handlers and distinguish bool from int.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/aod9scSLCd4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/cached-property-and-invalidation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/cached-property-and-invalidation.jpg</video:thumbnail_loc><video:title>Cache and Invalidate Python Properties</video:title><video:description>Cache an expensive derived value and invalidate it whenever its inputs change.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/cfTtSKzqZEw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/callable-objects-and-state/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/callable-objects-and-state.jpg</video:thumbnail_loc><video:title>Build Stateful Callable Objects in Python</video:title><video:description>Use __call__ to make a validated counter object invokable while it keeps its own state.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/iUnxoFAlycU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/io-bytesio-and-binary-streams/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/io-bytesio-and-binary-streams.jpg</video:thumbnail_loc><video:title>Read Binary Records with Python BytesIO</video:title><video:description>Read a length-prefixed binary record from BytesIO and reject incomplete payloads.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/UxaHR7vDEjg</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/files-line-endings-and-encoding/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/files-line-endings-and-encoding.jpg</video:thumbnail_loc><video:title>Handle Python File Encodings and Line Endings</video:title><video:description>Decode UTF-8 bytes and split lines consistently across LF, CRLF, and CR endings.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/3_F7bH3e9ew</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-duplicate-file-scanner/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-duplicate-file-scanner.jpg</video:thumbnail_loc><video:title>Build an Offline Duplicate File Scanner</video:title><video:description>Group equal byte contents by path and explain how to extend the algorithm to real files.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/D0LEufzDxv4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/calendar-month-boundaries/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/calendar-month-boundaries.jpg</video:thumbnail_loc><video:title>Find Month Start and End Dates in Python</video:title><video:description>Return the first and last date of a month, including leap-year February.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/ttpkXdqVxh4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/datetime-strptime-and-strftime/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/datetime-strptime-and-strftime.jpg</video:thumbnail_loc><video:title>Parse and Format UTC Timestamps in Python</video:title><video:description>Validate a fixed UTC timestamp format before producing an ISO-style output string.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/d4zgiIvNrtM</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-habit-streak-analyzer/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-habit-streak-analyzer.jpg</video:thumbnail_loc><video:title>Build a Python Habit Streak Analyzer</video:title><video:description>Find the longest run of consecutive calendar dates in a list of habit check-ins.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/q8GxQ08fbyU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/statistics-quantiles-and-percentiles/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/statistics-quantiles-and-percentiles.jpg</video:thumbnail_loc><video:title>Calculate Quantiles and Percentiles with Python</video:title><video:description>Calculate and interpret inclusive quartiles for a numeric dataset with an explicit method.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/kGeS-qAlpkA</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/random-weighted-sampling/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/random-weighted-sampling.jpg</video:thumbnail_loc><video:title>Use Weighted Random Sampling in Python</video:title><video:description>Draw one outcome according to validated nonnegative weights using an injected random generator.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/NI0O2fpp-S8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-survey-summarizer/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-survey-summarizer.jpg</video:thumbnail_loc><video:title>Build a Python Survey Response Summarizer</video:title><video:description>Normalize optional survey answers and compute sorted choice counts plus an optional rating average.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/MXQ3Qj2CVBg</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/algorithmic-complexity-in-practice/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/algorithmic-complexity-in-practice.jpg</video:thumbnail_loc><video:title>Understand Python Algorithmic Complexity with Measured Inputs</video:title><video:description>Measure how comparison counts grow for linear and binary search on increasing sorted inputs.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/oXwd04MGq3M</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/two-pointer-technique/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/two-pointer-technique.jpg</video:thumbnail_loc><video:title>Solve Sorted-List Pair Sums with Two Pointers</video:title><video:description>Find a pair that reaches a target sum in a sorted list without testing every pair.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/6S3WXWtMBrk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/backtracking-combinations-and-pruning/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/backtracking-combinations-and-pruning.jpg</video:thumbnail_loc><video:title>Find Combinations with Python Backtracking and Pruning</video:title><video:description>Generate unique positive-integer combinations that sum to a target while pruning impossible branches.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/hv700j1sqKM</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/http-json-response-validation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/http-json-response-validation.jpg</video:thumbnail_loc><video:title>Validate JSON from HTTP Responses in Python</video:title><video:description>Validate an HTTP-like response&#39;s status, JSON syntax, and expected field types before using its data.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/I3RVmO1wsw0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/retries-timeouts-and-backoff/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/retries-timeouts-and-backoff.jpg</video:thumbnail_loc><video:title>Retry Transient Failures with Timeouts and Backoff in Python</video:title><video:description>Retry only transient local failures with a bounded exponential delay schedule.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/gO3ceIf-MIg</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/project-offline-api-client/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/project-offline-api-client.jpg</video:thumbnail_loc><video:title>Build an Offline Python API Client Simulator</video:title><video:description>Build a deterministic offline client that retries temporary failures, validates user JSON, and caches only successful records.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/uHVYHSieYo0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-typeddict-required-optional-keys/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-typeddict-required-optional-keys.jpg</video:thumbnail_loc><video:title>Python TypedDict: Required and Optional Keys</video:title><video:description>Model a dictionary record with one required key and one optional key, then use it without assuming TypedDict validates values at runtime.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/n9vzHPg9JjM</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pillow-resize-image-aspect-ratio/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pillow-resize-image-aspect-ratio.jpg</video:thumbnail_loc><video:title>Pillow Resize Image Without Losing Aspect Ratio</video:title><video:description>Resize an image into a maximum width and height without distortion, upscaling, or changing the original image.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/OsgYbv-tZ3M</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pandas-groupby-multiple-columns/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pandas-groupby-multiple-columns.jpg</video:thumbnail_loc><video:title>Pandas GroupBy Multiple Columns with Named Aggregations</video:title><video:description>Summarize sales by region and product, with separate total amount and distinct order count columns.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/2efHBDvqlqY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pandas-merge-on-multiple-columns/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pandas-merge-on-multiple-columns.jpg</video:thumbnail_loc><video:title>Pandas Merge on Multiple Columns Without Duplicate Matches</video:title><video:description>Join orders with regional prices using both SKU and region, rejecting duplicate lookup keys and null join keys.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Ux2-ty4186Q</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pandas-drop-duplicates-by-column/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pandas-drop-duplicates-by-column.jpg</video:thumbnail_loc><video:title>Pandas Drop Duplicates by Column and Keep the Latest Row</video:title><video:description>Deduplicate records by email while retaining the latest timestamped row and leaving the input unchanged.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/obak0ZsedTc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-create-temp-file/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-create-temp-file.jpg</video:thumbnail_loc><video:title>Python Create Temp File with NamedTemporaryFile</video:title><video:description>Create a UTF-8 temporary file, read it from the correct cursor position, and clean it up automatically.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/rDNRq5zBU2E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-rotating-file-handler/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-rotating-file-handler.jpg</video:thumbnail_loc><video:title>Python Rotating File Handler: Limit Log File Size</video:title><video:description>Rotate a UTF-8 log file by byte size and retain a bounded number of backups.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/_sI3nRkxJWo</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-argparse-subcommands/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-argparse-subcommands.jpg</video:thumbnail_loc><video:title>Python argparse Subcommands with add_subparsers</video:title><video:description>Give add and list commands separate arguments and reject a missing or incomplete command.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Nzpa58nMo9k</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-concurrent-futures-as-completed/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-concurrent-futures-as-completed.jpg</video:thumbnail_loc><video:title>Python concurrent.futures as_completed: Handle Results as They Finish</video:title><video:description>Consume futures in completion order, associate each result with its input, and handle individual failures.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/21i_MS37dh8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-subprocess-run-command/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-subprocess-run-command.jpg</video:thumbnail_loc><video:title>Python subprocess.run Command: Capture Output Safely</video:title><video:description>Run a known local Python child process with separate arguments, capture output, and handle status and timeout.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/GxxJWAsclVY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-zipfile-extract-safely/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-zipfile-extract-safely.jpg</video:thumbnail_loc><video:title>Python zipfile extract: unpack selected files safely</video:title><video:description>Inspect ZIP members, allow only expected text files, and extract them into one chosen directory.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/2bZqwl1cP1c</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/fastapi-request-body-validation/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/fastapi-request-body-validation.jpg</video:thumbnail_loc><video:title>FastAPI request body: validate JSON with a Pydantic model</video:title><video:description>Declare a POST request body, separate it from path parameters, and understand automatic 422 validation responses.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/eBG8Ywpp9gg</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/beautifulsoup-parse-html-table/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/beautifulsoup-parse-html-table.jpg</video:thumbnail_loc><video:title>BeautifulSoup parse table: extract HTML rows into Python records</video:title><video:description>Select one HTML table, read its header and cells, and turn rows into records without confusing nested tables.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/-4WvWlksb_0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-cprofile-example/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-cprofile-example.jpg</video:thumbnail_loc><video:title>Python cProfile example: find slow functions and read pstats</video:title><video:description>Profile a function, sort cumulative time, and distinguish call counts from elapsed time.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/TaSm707fM-8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/openpyxl-read-excel-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/openpyxl-read-excel-python.jpg</video:thumbnail_loc><video:title>openpyxl read Excel in Python: rows, headers, and values</video:title><video:description>Read an .xlsx workbook with openpyxl and turn a sheet with headers into validated records.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/FJgdbf-4-1E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/numpy-reshape-array-dimensions/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/numpy-reshape-array-dimensions.jpg</video:thumbnail_loc><video:title>NumPy reshape: Change Array Dimensions Without Shape Errors</video:title><video:description>Reshape a one-dimensional NumPy array into a chosen number of columns, with a clear check for incompatible sizes.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/_oHixqtAKvc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pandas-pivot-table-multiple-aggregations/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pandas-pivot-table-multiple-aggregations.jpg</video:thumbnail_loc><video:title>Pandas Pivot Table with Multiple Aggregations</video:title><video:description>Build a region-by-product pivot table with both sum and mean of an amount column, then read each measure reliably.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/VyVi6sz9dEw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pandas-fillna-different-columns/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pandas-fillna-different-columns.jpg</video:thumbnail_loc><video:title>Pandas fillna: Different Values for Different Columns</video:title><video:description>Fill missing city and score values with separate defaults while leaving other columns and the input DataFrame unchanged.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/5PIo2k4bWPA</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/asyncio-gather-tasks-errors/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/asyncio-gather-tasks-errors.jpg</video:thumbnail_loc><video:title>asyncio.gather: Run Tasks Together and Handle Errors</video:title><video:description>Run independent coroutines together and turn returned exceptions into clear per-item results without losing input order.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/8heMSxOpO8E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pytest-parametrize-multiple-cases/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pytest-parametrize-multiple-cases.jpg</video:thumbnail_loc><video:title>pytest.mark.parametrize: Test Many Cases with One Function</video:title><video:description>Design a small table of input-output cases and run it as separate named pytest cases in a local project.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/wpYvZ-r-VvI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pandas-to-datetime-parse-dates/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pandas-to-datetime-parse-dates.jpg</video:thumbnail_loc><video:title>Pandas to_datetime: Formats, Invalid Dates and errors=&#39;coerce&#39;</video:title><video:description>Convert date strings to UTC timestamps while identifying invalid or missing source values.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/1NUuGSjxzz0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/matplotlib-savefig-high-resolution/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/matplotlib-savefig-high-resolution.jpg</video:thumbnail_loc><video:title>Matplotlib savefig: Sharp PNGs, DPI and Transparency</video:title><video:description>Save the exact Figure you created to a PNG file at 200 DPI with labels inside the output.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/sA-loCP261c</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-re-findall-patterns/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-re-findall-patterns.jpg</video:thumbnail_loc><video:title>Python re.findall: Extract Matches and Capture Groups</video:title><video:description>Extract complete ERR- and WARN- codes without returning only captured prefixes or partial codes.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/KaZhWCOkGlI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pydantic-field-validator-v2/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pydantic-field-validator-v2.jpg</video:thumbnail_loc><video:title>Pydantic Field Validator: Validate and Normalize Input</video:title><video:description>Normalize a handle before type validation while rejecting blank or non-string input.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/9Q-MfmDJZ1E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/fastapi-query-parameters-pagination/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/fastapi-query-parameters-pagination.jpg</video:thumbnail_loc><video:title>FastAPI Query Parameters: Defaults and Validation</video:title><video:description>Add typed, bounded skip and limit query parameters to a GET route and apply them to a collection.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Tpn8hyyYphU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/pytest-tmp-path/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/pytest-tmp-path.jpg</video:thumbnail_loc><video:title>pytest tmp_path: Test Code That Reads and Writes Files</video:title><video:description>Use pytest&#39;s tmp_path fixture to test a file writer in an isolated directory and assert the saved content.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/LOlfbFQpDG4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/dataclass-to-dict/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dataclass-to-dict.jpg</video:thumbnail_loc><video:title>Dataclass to Dict with asdict() and Nested Values</video:title><video:description>Convert dataclass instances to dictionaries with asdict and understand nested conversion versus shallow field access.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/KKPQw33sQ8I</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/jsonschema-validate-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/jsonschema-validate-python.jpg</video:thumbnail_loc><video:title>Validate JSON Schema in Python and Explain Errors</video:title><video:description>Validate Python data against a JSON Schema, collect errors, and distinguish a bad instance from a bad schema.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/lT8ryAyXHqU</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/python-csv-to-json/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/python-csv-to-json.jpg</video:thumbnail_loc><video:title>CSV to JSON in Python: Headers, Types and Encoding</video:title><video:description>Turn CSV rows into JSON objects with headers, UTF-8 text, and explicit handling for malformed rows.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Jakwi6juC1c</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/lessons/numpy-boolean-indexing/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/numpy-boolean-indexing.jpg</video:thumbnail_loc><video:title>NumPy Boolean Indexing with Multiple Conditions</video:title><video:description>Build a Boolean mask, select matching NumPy values or rows, and distinguish a selected copy from assignment into the source.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/hbDFH6ZAJmo</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/dictionary-changed-size-during-iteration/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dictionary-changed-size-during-iteration.jpg</video:thumbnail_loc><video:title>Fix RuntimeError: dictionary changed size during iteration</video:title><video:description>Deleting keys while looping over a dictionary invalidates its live iterator. Use a snapshot of keys for in-place deletion or build a new filtered dictionary, then verify the original-state rule.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/4oQeWfWA62M</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/f-string-not-interpolating/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/f-string-not-interpolating.jpg</video:thumbnail_loc><video:title>Why Is My Python f-String Printing Curly Braces?</video:title><video:description>Your output contains {name} instead of the value of name. Diagnose the missing f prefix, then learn when doubled braces are actually needed.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Ub7CpWnLFrw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/filter-list-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/filter-list-python.jpg</video:thumbnail_loc><video:title>Filter a Python List: Comprehension vs filter()</video:title><video:description>Use a list comprehension when you need a list immediately. filter() applies a predicate lazily, so convert its iterator to a list only when you need the whole result.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/zvvdlr9zwkc</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/fix-unboundlocalerror-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/fix-unboundlocalerror-python.jpg</video:thumbnail_loc><video:title>Fix UnboundLocalError in Python | Understand Local Scope</video:title><video:description>A function assigns to a name, so Python treats it as local throughout that function; reading it before a value is assigned raises UnboundLocalError. Pass the current value in and return the update, or initialize a branch-dependent local before reading it.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/F8M1izDEIJM</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/isinstance-vs-type-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/isinstance-vs-type-python.jpg</video:thumbnail_loc><video:title>Python isinstance() vs type(): Why a Subclass Check Fails</video:title><video:description>Use isinstance(value, Base) when instances of Base and its subclasses are valid. Use an exact type check only when the contract intentionally excludes subclasses.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/ycmSrrtyvXY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/list-append-returns-none/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/list-append-returns-none.jpg</video:thumbnail_loc><video:title>Why Does Python list.append() Return None?</video:title><video:description>The item was added, yet the variable assigned from append() contains None. See exactly which object changed and choose the right pattern for your program.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/_1zF0IOkhvI</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/mutable-default-argument-retains-values/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/mutable-default-argument-retains-values.jpg</video:thumbnail_loc><video:title>Python Mutable Default Arguments: Why Values Persist</video:title><video:description>A default list is created when the function is defined, so later calls can reuse it. Trace that shared object, then create a fresh list when the caller omits the argument.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/kygQzZshAl8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/naive-aware-datetime-typeerror/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/naive-aware-datetime-typeerror.jpg</video:thumbnail_loc><video:title>Fix Python&#39;s Naive and Aware Datetime TypeError</video:title><video:description>A datetime without timezone information cannot be ordered against one with an offset. Identify what the naive value means, make that interpretation explicit, and verify comparisons across offsets.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/wBTGFpOPdC8</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/nonetype-object-not-subscriptable/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/nonetype-object-not-subscriptable.jpg</video:thumbnail_loc><video:title>Fix TypeError: &#39;NoneType&#39; object is not subscriptable</video:title><video:description>Square brackets fail when the value before them is None. Trace the lookup that produced None, handle the missing record explicitly, and test the edge cases.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/kFThQzXf88E</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/too-many-values-to-unpack-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/too-many-values-to-unpack-python.jpg</video:thumbnail_loc><video:title>Fix ValueError: too many values to unpack in Python</video:title><video:description>The right-hand side produces more values than the assignment has targets. Count the fields, then choose the targets or a starred remainder that fits the data contract.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/W1v5U47tkSo</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/unhashable-type-list-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/unhashable-type-list-python.jpg</video:thumbnail_loc><video:title>Fix TypeError: unhashable type: &#39;list&#39; in Python</video:title><video:description>A list cannot be a set member or dictionary key because it is mutable and unhashable. Convert fixed coordinate values to tuples, then test duplicates and nested values.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/GGw6KZx3S6w</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/valueerror-invalid-literal-int/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/valueerror-invalid-literal-int.jpg</video:thumbnail_loc><video:title>Fix ValueError: invalid literal for int() in Python</video:title><video:description>int() can parse a valid whole-number string, but text such as &#39;12.5&#39; is not an integer literal. Inspect the actual input, validate the intended format, and test the edge cases.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/sIoEBGOamRk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/zero-division-error-python/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/zero-division-error-python.jpg</video:thumbnail_loc><video:title>How to Fix ZeroDivisionError in Python</video:title><video:description>Dividing by zero stops a calculation. Trace where the divisor came from, decide what zero means for your program, and test that rule instead of hiding the error.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/3_XwKg58JnY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/input-returns-string-typeerror/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/input-returns-string-typeerror.jpg</video:thumbnail_loc><video:title>Why Does input() Cause a TypeError When Adding a Number?</video:title><video:description>The characters a person types look like a number, but input() returns a string. Find the mismatched types, convert deliberately, and handle text that cannot be converted.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/_QPusCrvS5w</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/modulenotfounderror-after-pip-install/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/modulenotfounderror-after-pip-install.jpg</video:thumbnail_loc><video:title>ModuleNotFoundError After pip install: Check the Python Environment</video:title><video:description>An install can succeed in one Python environment while your program runs in another. Prove which interpreter each command uses, then make installation and execution use the same one.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/OqJgoE8B2qw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/loop-keeps-only-last-item/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/loop-keeps-only-last-item.jpg</video:thumbnail_loc><video:title>Why Does My Python Loop Keep Only the Last Item?</video:title><video:description>If each loop iteration assigns a new value to one variable, the earlier values disappear. Trace the variable, create a collection before the loop, and add each result to it.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/LkLhacIzud4</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/filenotfounderror-existing-file/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/filenotfounderror-existing-file.jpg</video:thumbnail_loc><video:title>FileNotFoundError When the File Exists: Check Your Working Directory</video:title><video:description>A relative filename is resolved from the process working directory, which may differ from the script&#39;s folder. Print both paths, then choose an explicit location for the data file.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/QALZ83K52Vw</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/list-index-out-of-range/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/list-index-out-of-range.jpg</video:thumbnail_loc><video:title>How to Fix IndexError: List Index Out of Range in Python</video:title><video:description>A list has fewer positions than your code expects. Reproduce the failure, inspect the list length, and choose a safe lookup or iteration pattern that matches the task.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/iS90ZBfhDWk</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/function-prints-none/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/function-prints-none.jpg</video:thumbnail_loc><video:title>Why Does My Python Function Return None After Printing?</video:title><video:description>A message on the screen is not a value returned to the caller. Trace the function&#39;s result, add an explicit return, and test how another line can use that value.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/Swbxq7RiPy0</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/dictionary-keyerror-missing-key/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/dictionary-keyerror-missing-key.jpg</video:thumbnail_loc><video:title>How to Fix KeyError for a Missing Python Dictionary Key</video:title><video:description>A dictionary lookup with square brackets requires the exact key to exist. Inspect the available keys, then decide whether a missing key should be handled or treated as an error.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/mmvGR9HCLwY</video:player_loc></video:video></url>
  <url><loc>https://pythonlessonlab.com/problems/sort-list-of-dicts-by-key/</loc><video:video><video:thumbnail_loc>https://pythonlessonlab.com/assets/video-posters/sort-list-of-dicts-by-key.jpg</video:thumbnail_loc><video:title>Sort a List of Dictionaries in Python | Fix TypeError with key</video:title><video:description>sorted(products) cannot compare whole dictionaries. Reproduce the TypeError, select a numeric price key, and test ties without changing the original list.</video:description><video:player_loc>https://www.youtube-nocookie.com/embed/dCmAoC-4hgQ</video:player_loc></video:video></url>
</urlset>
