Python and R Programming
Lists, Dictionaries, Sets and Comprehensions
PGCP-BDA
list
A list is a mutable ordered sequence that permits duplicates and stores references to objects.
A list is a mutable ordered sequence that permits duplicates and stores references to objects. Python’s runtime model matters: names refer to objects, operations are dispatched by type and mutability determines whether an operation changes an object or creates another one. Clear code preserves object boundaries, validates external input and uses exceptions to report conditions a caller can handle. A small example of list should be traced from object or input creation through every relevant operation and return value. Include an empty or null-like case and one invalid case so the exception or boundary behavior is visible. Production use should keep external input validation, business logic, storage and presentation in separate functions or classes.
append extend insert
append adds one object, extend adds each item from an iterable and insert places one object before a selected index.
append adds one object, extend adds each item from an iterable and insert places one object before a selected index. The mechanism should be demonstrated with a small valid case, a boundary case and an invalid case. This reveals type conversions, empty inputs, missing values and exception behavior before the same code is placed in an AI data pipeline or web service. The practical value of append extend insert appears when the program changes. A sound design permits one behavior to be replaced or extended without duplicating validation and cleanup code. Logging should identify the operation and outcome without exposing credentials or personal data and concurrent use must be supported explicitly rather than assumed from a successful single-threaded example.
remove pop clear
remove deletes the first equal value, pop deletes and returns by index and clear removes every element.
remove deletes the first equal value, pop deletes and returns by index and clear removes every element. Python’s runtime model matters: names refer to objects, operations are dispatched by type and mutability determines whether an operation changes an object or creates another one. Clear code preserves object boundaries, validates external input and uses exceptions to report conditions a caller can handle. A small example of remove pop clear should be traced from object or input creation through every relevant operation and return value. Include an empty or null-like case and one invalid case so the exception or boundary behavior is visible. Production use should keep external input validation, business logic, storage and presentation in separate functions or classes.
sorting
list.sort mutates a list and returns None, while sorted creates a new list; both support key functions and reverse order.
Python list.sort mutates a list and sorted creates a new list; both use stable ordering and an optional key function evaluated once per element. The mechanism should be demonstrated with a small valid case, a boundary case and an invalid case. This reveals type conversions, empty inputs, missing values and exception behavior before the same code is placed in an AI data pipeline or web service. The practical value of sorting appears when the program changes. A sound design permits one behavior to be replaced or extended without duplicating validation and cleanup code. Logging should identify the operation and outcome without exposing credentials or personal data and concurrent use must be supported explicitly rather than assumed from a successful single-threaded example.
list comprehension
A list comprehension constructs a list from nested iteration, optional conditions and one output expression with local comprehension scope.
A list comprehension constructs a list from nested iteration, optional conditions and one output expression with local comprehension scope. A concise Python expression is useful only when its data flow remains readable. Choose the built-in type or library abstraction that matches ordering, uniqueness, lookup, numerical or tabular requirements. Observe return values and side effects and keep transformation code separate from input, storage and presentation. When using list comprehension, document which object owns mutable state, which caller releases resources and which failures can propagate. Names and types should express the contract without forcing a reader to inspect every implementation detail. Automated tests should verify the public behavior and avoid depending on incidental internal ordering unless that ordering is part of the contract.
dictionary
A dictionary is a mutable insertion-ordered mapping from unique hashable keys to object references.
A dictionary is a mutable insertion-ordered mapping from unique hashable keys to object references. Python’s runtime model matters: names refer to objects, operations are dispatched by type and mutability determines whether an operation changes an object or creates another one. Clear code preserves object boundaries, validates external input and uses exceptions to report conditions a caller can handle. A small example of dictionary should be traced from object or input creation through every relevant operation and return value. Include an empty or null-like case and one invalid case so the exception or boundary behavior is visible. Production use should keep external input validation, business logic, storage and presentation in separate functions or classes.
hashable key
A dictionary key must have a stable hash and equality behavior for its lifetime, which normally requires immutability of the compared value.
A dictionary key must have a stable hash and equality behavior for its lifetime, which normally requires immutability of the compared value. A concise Python expression is useful only when its data flow remains readable. Choose the built-in type or library abstraction that matches ordering, uniqueness, lookup, numerical or tabular requirements. Observe return values and side effects and keep transformation code separate from input, storage and presentation. When using hashable key, document which object owns mutable state, which caller releases resources and which failures can propagate. Names and types should express the contract without forcing a reader to inspect every implementation detail. Automated tests should verify the public behavior and avoid depending on incidental internal ordering unless that ordering is part of the contract.
dictionary comprehension
A dictionary comprehension creates key-value pairs from an iterable with optional filtering, with later duplicate keys replacing earlier ones.
A dictionary comprehension creates key-value pairs from an iterable with optional filtering, with later duplicate keys replacing earlier ones. Python’s runtime model matters: names refer to objects, operations are dispatched by type and mutability determines whether an operation changes an object or creates another one. Clear code preserves object boundaries, validates external input and uses exceptions to report conditions a caller can handle. A small example of dictionary comprehension should be traced from object or input creation through every relevant operation and return value. Include an empty or null-like case and one invalid case so the exception or boundary behavior is visible. Production use should keep external input validation, business logic, storage and presentation in separate functions or classes.
set
An unordered Python collection of unique hashable elements supporting membership and mathematical set operations.
nested data
Nested lists and mappings model hierarchical records but require validation of missing keys, types and mutable sharing.
Nested lists and mappings model hierarchical records but require validation of missing keys, types and mutable sharing. A concise Python expression is useful only when its data flow remains readable. Choose the built-in type or library abstraction that matches ordering, uniqueness, lookup, numerical or tabular requirements. Observe return values and side effects and keep transformation code separate from input, storage and presentation. When using nested data, document which object owns mutable state, which caller releases resources and which failures can propagate. Names and types should express the contract without forcing a reader to inspect every implementation detail. Automated tests should verify the public behavior and avoid depending on incidental internal ordering unless that ordering is part of the contract.
Insertion Update Deletion
Assignment inserts or replaces a key, update merges entries and del, pop or popitem remove entries with different return behavior. Python’s runtime model matters: names refer to objects, operations are dispatched by type and mutability determines whether an operation changes an object or creates another one. Clear code preserves object boundaries, validates external input and uses exceptions to report conditions a caller can handle. A small example of insertion update deletion should be traced from object or input creation through every relevant operation and return value. Include an empty or null-like case and one invalid case so the exception or boundary behavior is visible. Production use should keep external input validation, business logic, storage and presentation in separate functions or classes.
Dictionary Methods
Dictionary methods support safe lookup, default insertion, merging, copying, view access and removal under explicit missing-key behavior. The mechanism should be demonstrated with a small valid case, a boundary case and an invalid case. This reveals type conversions, empty inputs, missing values and exception behavior before the same code is placed in an AI data pipeline or web service. The practical value of dictionary methods appears when the program changes. A sound design permits one behavior to be replaced or extended without duplicating validation and cleanup code. Logging should identify the operation and outcome without exposing credentials or personal data and concurrent use must be supported explicitly rather than assumed from a successful single-threaded example.
Iteration Over Mappings
Iterating a dictionary yields keys; keys, values and items views reflect later dictionary changes and support controlled traversal. A concise Python expression is useful only when its data flow remains readable. Choose the built-in type or library abstraction that matches ordering, uniqueness, lookup, numerical or tabular requirements. Observe return values and side effects and keep transformation code separate from input, storage and presentation. When using iteration over mappings, document which object owns mutable state, which caller releases resources and which failures can propagate. Names and types should express the contract without forcing a reader to inspect every implementation detail. Automated tests should verify the public behavior and avoid depending on incidental internal ordering unless that ordering is part of the contract.
Lookup And Membership
Dictionary subscription retrieves a value or raises KeyError, get supplies a default and in tests keys rather than values. The mechanism should be demonstrated with a small valid case, a boundary case and an invalid case. This reveals type conversions, empty inputs, missing values and exception behavior before the same code is placed in an AI data pipeline or web service. The practical value of lookup and membership appears when the program changes. A sound design permits one behavior to be replaced or extended without duplicating validation and cleanup code. Logging should identify the operation and outcome without exposing credentials or personal data and concurrent use must be supported explicitly rather than assumed from a successful single-threaded example.
List Operators
Concatenation creates a new list, repetition repeats references and comparisons are lexicographic. Python’s runtime model matters: names refer to objects, operations are dispatched by type and mutability determines whether an operation changes an object or creates another one. Clear code preserves object boundaries, validates external input and uses exceptions to report conditions a caller can handle. A small example of list operators should be traced from object or input creation through every relevant operation and return value. Include an empty or null-like case and one invalid case so the exception or boundary behavior is visible. Production use should keep external input validation, business logic, storage and presentation in separate functions or classes.
Index And Slice
List indexing selects one element, while slicing creates a shallow new list and slice assignment can change list length. A concise Python expression is useful only when its data flow remains readable. Choose the built-in type or library abstraction that matches ordering, uniqueness, lookup, numerical or tabular requirements. Observe return values and side effects and keep transformation code separate from input, storage and presentation. When using index and slice, document which object owns mutable state, which caller releases resources and which failures can propagate. Names and types should express the contract without forcing a reader to inspect every implementation detail. Automated tests should verify the public behavior and avoid depending on incidental internal ordering unless that ordering is part of the contract.
Joining And Splitting
str.join combines string elements with a separator, while split divides text using whitespace rules or a chosen delimiter. The mechanism should be demonstrated with a small valid case, a boundary case and an invalid case. This reveals type conversions, empty inputs, missing values and exception behavior before the same code is placed in an AI data pipeline or web service. The practical value of joining and splitting appears when the program changes. A sound design permits one behavior to be replaced or extended without duplicating validation and cleanup code. Logging should identify the operation and outcome without exposing credentials or personal data and concurrent use must be supported explicitly rather than assumed from a successful single-threaded example.
Search And Membership
in performs equality-based membership search, index returns the first position or raises ValueError and count counts equal elements. A concise Python expression is useful only when its data flow remains readable. Choose the built-in type or library abstraction that matches ordering, uniqueness, lookup, numerical or tabular requirements. Observe return values and side effects and keep transformation code separate from input, storage and presentation. When using search and membership, document which object owns mutable state, which caller releases resources and which failures can propagate. Names and types should express the contract without forcing a reader to inspect every implementation detail. Automated tests should verify the public behavior and avoid depending on incidental internal ordering unless that ordering is part of the contract.
Continue learning
Related notes
Put this topic into timed practice
Open mock tests when you want full-exam pacing, or keep drilling in practice mode.