0% found this document useful (0 votes)
87 views104 pages

Unit III Data Structures

Uploaded by

amlakshmi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Topics covered

  • String Formatting,
  • filter() Function,
  • Lists,
  • Data Types,
  • Accessing Values,
  • Memory Management,
  • zip() Function,
  • Programming Examples,
  • Sets,
  • Deleting Items
0% found this document useful (0 votes)
87 views104 pages

Unit III Data Structures

Uploaded by

amlakshmi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Topics covered

  • String Formatting,
  • filter() Function,
  • Lists,
  • Data Types,
  • Accessing Values,
  • Memory Management,
  • zip() Function,
  • Programming Examples,
  • Sets,
  • Deleting Items

1

Python Programming
Using Problem Solving Approach

Reema Thareja

© Oxford University Press 2017. All rights reserved. 1


CHAPTER 8
Data Structures

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS2RESERVED.


Data Structure: Sequence

• A data structure is a group of data elements that are put together


under one name. Data structure defines a particular way of storing
and organizing data in a computer so that it can be used efficiently.
• Sequence is the most basic data structure in Python. In sequence, each
element has a specific index. This index value starts from zero and is
automatically incremented for the next element.
• In Python, sequence is the generic term for an ordered set. For
example, we have already studied strings which are a sequence of
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS3RESERVED.
• Python has some basic built-in functions that help
programmers to manipulate elements that form a part of a
sequence.

• These functions include finding the length of a sequence,


finding the largest and smallest elements in a sequence, etc.
Other operations that can be performed on a sequence include
indexing, slicing, adding, multiplying, and checking for
membership.

© Oxford University Press 2017. All rights reserved. 4


Lists

• List is a versatile data type available in Python. It is a sequence


in which elements are written as a list of comma-separated
values (items) between square brackets.
• The key feature of a list is that it can have elements that belong
to different data types. The syntax of defining a list can be given
as,
List_variale = [val1, val2,...]
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS5RESERVED.
• List is mutable which means that value of its elements can be
changed

© Oxford University Press 2017. All rights reserved. 6


Access Values in Lists

• Similar to strings, lists can also be sliced and concatenated.


To access values in lists, square brackets are used to slice
along with the index or indices to get value stored at that
index. The syntax for the slice operation is given as,

seq = List[start:stop:step]
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS7RESERVED.
© Oxford University Press 2017. All rights reserved. 8
© Oxford University Press 2017. All rights reserved. 9
Updating Values in Lists

• Once created, one or more elements of a list can be easily updated by


giving the slice on the left-hand side of the assignment operator.
• You can also append new values in the list and remove existing
value(s) from the list using the append() method and del statement
respectively.

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


10RESERVED.
© Oxford University Press 2017. All rights reserved. 11
© Oxford University Press 2017. All rights reserved. 12
© Oxford University Press 2017. All rights reserved. 13
Nested Lists
Nested list means a list within another list. We have already said that a list has elements of different data
types which can include even a list.

Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


14RESERVED.
© Oxford University Press 2017. All rights reserved. 15
Cloning Lists
If you want to modify a list and also keep a copy of the original list, then you should create a separate copy of
the list (not just the reference). This process is called cloning. The slice operation is used to clone a list.

Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


16RESERVED.
List Methods

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


17RESERVED.
© Oxford University Press 2017. All rights reserved. 18
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
19RESERVED.
Basic List Operations

© Oxford University Press 2017. All rights reserved. 20


© Oxford University Press 2017. All rights reserved. 21
© Oxford University Press 2017. All rights reserved. 22
Stack

• Stack is an important data structure which stores its elements in an


ordered manner.
• Stack is a linear data structure which uses the same principle, i.e.,
the elements in a stack are added and removed only from one end.
Hence, a stack is called a LIFO (Last-In-First-Out) data structure, as
the element that was inserted last is the first one to be taken out.

23
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS RESERVED.
Stack

© Oxford University Press 2017. All rights reserved. 24


Application of stack

© Oxford University Press 2017. All rights reserved. 25


• A company wants to keep record of Employees ID in linear data
structure which follows Last In First Out Methodology. Write
simple python program to illustrate these scenario using List

© Oxford University Press 2017. All rights reserved. 26


Using Lists as Stack
Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


27RESERVED.
• Write isEmpty() function for checking whether the stack is empty or
not while performing pop()
• Write isFull() function for checking whether the stack is full or not
while performing push()

© Oxford University Press 2017. All rights reserved. 28


© Oxford University Press 2017. All rights reserved. 29
© Oxford University Press 2017. All rights reserved. 30
Using Lists as Queues

Queue is an important data structure which stores its elements in an ordered


manner. In computer systems, the operating system makes full use of queues for
the following tasks.
• To maintain waiting lists for a single shared resource like printer, disk, CPU, etc.
• To transfer data asynchronously (data not necessarily received at same rate as
sent) between two processes (IO buffers), e.g., pipes, file IO, and sockets.
• As buffers on MP3 players and portable CD players, iPod playlist, etc.
• Handling interrupts.
• Queues are also used in the playlist of jukebox to add songs to the end and play
from the front of the list. © OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
31RESERVED.
© Oxford University Press 2017. All rights reserved. 32
Using Lists as Queues

• Queue supports three basic operations—insert, delete, and peep (or


peek). In Python, you can easily implement a queue by using the
append() method to insert an element at the end of the queue, pop()
method with an index 0 to delete the first element from the queue,
and slice operation to print the value of the last the element in the
queue.

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


33RESERVED.
Using Lists as Queues

• Queues are also used in the playlist of jukebox to add songs to the end and play
from the front of the list.
Queue supports three basic operations—insert, delete, and peep (or peek). In
Python, you can easily implement a queue by using the append() method to insert
an element at the end of the queue, pop() method with an index 0 to delete the first
element from the queue, and slice operation to print the value of the last the
element in the queue.

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


34RESERVED.
Using Lists as Queues
Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


35RESERVED.
List Comprehensions

Python also supports computed lists called list comprehensions having the
following syntax.
List = [expression for variable in sequence]
Where, the expression is evaluated once, for every item in the sequence.
List comprehensions help programmers to create lists in a concise way. This is
mainly beneficial to make new lists where each element is the obtained by
applying some operations to each member of another sequence or iterable. List
comprehension is also used to create a subsequence of those elements that satisfy a
certain condition. © OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
36RESERVED.
© Oxford University Press 2017. All rights reserved. 37
Example

© Oxford University Press 2017. All rights reserved. 38


Looping in Lists
Python's for and in constructs are extremely useful especially when working with lists. The for var in list
statement is an easy way to access each element in a list (or any other sequence). For example, in the
following code, the for loop is used to access each item in the list.
for i in list: Example:

print(i)

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


39RESERVED.
Using the enumerate() and range() Functions
enumerate() function is used when you want to print both index as well as an item in the list. The function
returns an enumerate object which contains the index and value of all the items of the list as a tuple.
The range() function is used when you need to print index.
Example
s:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


40RESERVED.
Using an Iterator
You can create an iterator using the built-in iter() function. The iterator is used to loop over the elements of
the list. For this, the iterator fetches the value and then automatically points to the next element in the list
when it is used with the next() method.
Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


41RESERVED.
Functional Programming

• Functional programming decomposes a problem into a set


of
Example:
functions
• Filter(), Map() and reduce functions are part of functional
programming tools that work on all list items

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


42RESERVED.
filter() Function

• The filter() function constructs a list from those elements of the list for which a
function returns True.
• The syntax of the filter() function is given as,
filter(function, sequence)
• As per the syntax, the filter() function returns a sequence that contains items from
the sequence for which the function is True. If sequence is a string, Unicode, or a
tuple, then the result will be of the same type;
• otherwise, it is always a list.
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
43RESERVED.
© Oxford University Press 2017. All rights reserved. 44
• Write a program that has a list of both positive
and negative numbers. Create another list using
filter() that has only positive values

© Oxford University Press 2017. All rights reserved. 45


© Oxford University Press 2017. All rights reserved. 46
map() Function

• The map() function applies a particular function to every element of


a list. Its syntax is same as the filter function

• After applying the specified function on the sequence, the map()


function returns the modified list. The map() function calls
function(item) for each item in the sequence and returns a list of the
return values.
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
47RESERVED.
Example: Program that adds 2 to every value in
the list

© Oxford University Press 2017. All rights reserved. 48


• Write a program that converts strings of all
uppercase into strings of all lowercase and
lowercase into uppercase characters using map
function

© Oxford University Press 2017. All rights reserved. 49


© Oxford University Press 2017. All rights reserved. 50
reduce() Function

• The reduce() function with syntax as given below returns a


single value generated by calling the function on the first
two items of the sequence, then on the result and the next
item, and so on.

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


51RESERVED.
Example: Program to calculate the sum of values in a list using the
reduce() function

© Oxford University Press 2017. All rights reserved. 52


• Write a python program to find minimum
value in a list using reduce()

© Oxford University Press 2017. All rights reserved. 53


© Oxford University Press 2017. All rights reserved. 54
Tuple

• Like lists, tuple is another data structure supported by


Python. It is very similar to lists but differs in two things.
• First, a tuple is a sequence of immutable objects. This means
that while you can change the value of one or more items in
a list, you cannot change the values in a tuple.
• Second, tuples use parentheses to define its elements
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
55RESERVED.
Tuple

Creating Tuple
Creating a tuple is very simple and almost similar to creating a list. For
creating a tuple, generally you need to just put the different comma-
separated values within a parentheses as shown below.
Tup1 = (val 1, val 2,...)
where val (or values) can be an integer, a floating number, a character,
or a string.
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
56RESERVED.
Tuple

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


57RESERVED.
Tuple with comma

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


58RESERVED.
Utility of Tuples
In real-world applications, tuples are extremely useful for representing records or structures as we call
in other programming languages. These structures store related information about a subject together.
The information belongs to different data types.
For example, a tuple that stores information about a student can have elements like roll_no, name, course, total
marks, avg, etc. Some built-in functions return a tuple. For example, the divmod() function returns two values
—quotient as well as the remainder after performing the divide operation.
Example
s:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


59RESERVED.
Accessing Values in a Tuple
Like other sequences (strings and lists) covered so far, indices in a tuple also starts at 0. You can even perform
operations like slice, concatenate, etc. on a tuple. For example, to access values in tuple, slice operation is used
along with the index or indices to obtain value stored at that index

Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


60RESERVED.
Deleting Elements in Tuple
Since tuple is an immutable data structure, you cannot delete value(s) from it. Of course, you can create a new
tuple that has all elements in your tuple except the ones you don't want (those you wanted to be deleted).

Example
s:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


61RESERVED.
Basic Tuple Operations

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


62RESERVED.
Tuple Assignment

• Tuple assignment is a very powerful feature in Python. It allows a


tuple of variables on the left side of the assignment operator to be
assigned values from a tuple given on the right side of the
assignment operator.
• Each value is assigned to its respective variable. In case, an
expression is specified on the right side of the assignment operator,
first that expression is evaluated and then assignment is done.
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
63RESERVED.
© Oxford University Press 2017. All rights reserved. 64
Tuples for Returning Multiple Values and Nested Tuples

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


65RESERVED.
© Oxford University Press 2017. All rights reserved. 66
Checking the Index: index() method
The index of an element in the tuple can be obtained by using the index() method. If the element being
searched is not present in the list, then error is generated. The syntax of index() is given as, list.index(obj)
where, obj is the object to be found out.

Example
s:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


67RESERVED.
count()Method and List Comprehension and Tuples

Example
s:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


68RESERVED.
Variable-length Argument Tuples
• Many built-in functions like max(), min(), sum(), etc. use variable-length
arguments since these functions themselves do not know how many arguments
will be passed to them. It allows a function to accept a variable (different) number
of arguments.
• This is especially useful in defining functions that are applicable to a large variety
of arguments. For example, if you have a function that displays all the parameters
passed to it, then even the function does not know how many values it will be
passed. In such cases, we use a variable-length argument that begins with a '*'
symbol. Any argument that starts with a '*' symbol is known as gather and
specifies a variable-length argument.
69
© Oxford University Press 2017. All rights reserved. 70
© Oxford University Press 2017. All rights reserved. 71
© Oxford University Press 2017. All rights reserved. 72
© Oxford University Press 2017. All rights reserved. 73
© Oxford University Press 2017. All rights reserved. 74
The zip() Function

The zip() is a built-in function that takes two or more sequences and
"zips" them into a list of tuples. The tuple thus, formed has one
element from each sequence.
Example: Program to show the use of zip() function

75
Variable length

© Oxford University Press 2017. All rights reserved. 76


Advantages of Tuple over List
• Tuples are used to store values of different data types. Lists can however, store data of
similar data types.
• Since tuples are immutable, iterating through tuples is faster than iterating over a list.
This means that a tuple performs better than a list.
• Tuples can be used as key for a dictionary but lists cannot be used as keys.
• Tuples are best suited for storing data that is write-protected.
• Tuples can be used in place of lists where the number of values is known and small.
• If you are passing a tuple as an argument to a function, then the potential for
unexpected behavior due to aliasing gets reduced.
• Multiple values from a function can be returned using a tuple.
• Tuples are used to format strings.
77
Example Programs

• Write a program that scans an email address and


forms a tuple of user name and domain

© Oxford University Press 2017. All rights reserved. 78


© Oxford University Press 2017. All rights reserved. 79
Sets
• Sets is another data structure supported by Python. Basically, sets are same as
lists but with a difference that sets are lists with no duplicate entries. Technically,
a set is a mutable and an unordered collection of items. This means that we can
easily add or remove items from it.
• A set is created by placing all the elements inside curly brackets {}, separated by
comma or by using the built-in function set(). The syntax of creating a set can be
given as,

Example: To create a set, you can write,

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


80RESERVED.
Set Operations

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


81RESERVED.
© Oxford University Press 2017. All rights reserved. 82
© Oxford University Press 2017. All rights reserved. 83
Set Operations

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


84RESERVED.
Set Operations

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


85RESERVED.
Set Operations

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


86RESERVED.
Dictionaries

• Dictionary is a data structure in which we store values as a pair of key and value.
Each key is separated from its value by a colon (:), and consecutive items are
separated by commas. The entire items in a dictionary are enclosed in curly
brackets({}). The syntax for defining a dictionary is
dictionary_name = {key_1: value_1, key_2: value_2, key_3: value_3}
• If there are many keys and values in dictionaries, then we can also write just one
key-value pair on a line to make the code easier to read and understand. This is
shown below.
dictionary_name = {key_1: value_1, key_2: value_2, key_3: value_3, ….}
© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS
87RESERVED.
© Oxford University Press 2017. All rights reserved. 88
Accessing Values

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


89RESERVED.
Adding and Modifying an Item in a Dictionary
Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


90RESERVED.
Modifying an Entry
Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


91RESERVED.
Deleting Items

• You can delete one or more items using the del keyword. To delete
or remove all the items in just one statement, use the clear() function.
• Finally, to remove an entire dictionary from the memory, we can
gain use the del statement as del Dict_name. The syntax to use the
del statement can be given as,
del dictionary_variable[key]

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


92RESERVED.
© Oxford University Press 2017. All rights reserved. 93
© Oxford University Press 2017. All rights reserved. 94
© Oxford University Press 2017. All rights reserved. 95
© Oxford University Press 2017. All rights reserved. 96
Sorting Items and Looping over Items in a Dictinonary
Example
s:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


97RESERVED.
Nested Dictionaries

Example:

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


98RESERVED.
Built-in Dictionary Functions and Methods

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


99RESERVED.
Built-in Dictionary Functions and Methods

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


100RESERVED.
Built-in Dictionary Functions and Methods

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


101RESERVED.
Difference between a List and a Dictionary
First, a list is an ordered set of items. But, a dictionary is a data structure that is used for matching one item
(key) with another (value).
• Second, in lists, you can use indexing to access a particular item. But, these indexes should be a number. In
dictionaries, you can use any type (immutable) of value as an index. For example, when we write Dict['Name'],
Name acts as an index but it is not a number but a string.
• Third, lists are used to look up a value whereas a dictionary is used to take one value and look up another
value. For this reason, dictionary is also known as a lookup table.
Fourth, the key-value pair may not be displayed in the order in which it was specified while defining the
dictionary. This is because Python uses complex algorithms (called hashing) to provide fast access to the items
stored in the dictionary. This also makes dictionary preferable to use over a list of tuples.

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


102RESERVED.
String Formatting with Dictionaries

Python also allows you to use string formatting feature with dictionaries. So you can use %s, %d, %f, etc. to
represent string, integer, floating point number, or any other data.

Example: Program that uses string formatting feature to print the key-value pairs stored in the dictionary

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


103RESERVED.
When to use which Data Structure?

• Use lists to store a collection of data that does not need random access.
• Use lists if the data has to be modified frequently.
• Use a set if you want to ensure that every element in the data structure must be unique.
• Use tuples when you want that your data should not be altered.

© OXFORD UNIVERSITY PRESS 2017. ALL RIGHTS


104RESERVED.

Common questions

Powered by AI

The primary differences between lists and tuples in Python are mutability and syntax. Lists are mutable, meaning their elements can be changed, while tuples are immutable and thus cannot be altered once created. Lists use square brackets for their syntax, whereas tuples use parentheses . These differences imply that tuples are suitable for storing data that should not be changed, making them ideal for use as keys in dictionaries or for passing multiple values from a function with reduced risks of unexpected changes. On the other hand, lists are more versatile for situations where data needs frequent modification . Furthermore, tuples provide faster iteration due to their immutability .

Tuples are chosen for returning multiple values from a function due to their immutability, ensuring that the values remain unchanged and consistent, promoting a reliable interface between the function and its caller. This is especially beneficial when the intention is to return related but invariant data. Unlike lists, tuples consume less memory and allow faster access due to their immutable nature, thus enhancing performance. When compared to lists, tuples provide a form of lightweight storage and minimal overhead for operations that do not require modification after creation, contributing to clearer program intent and reduced risk of bugs due to inadvertent data changes .

A set is more beneficial than a list or tuple in scenarios where uniqueness of elements is crucial, as sets automatically handle duplicate entries by allowing only unique items. Sets are also advantageous when the order of elements is not a concern, given their unordered nature. They support efficient membership testing and can perform mathematical operations like union, intersection, and difference effectively. This makes them ideal for operations requiring logically distinct or unique elements without specific order .

Lists in Python are ordered collections indexed by integers, making them suitable for sequential data access and modification. They are accessed by numerical indices . Dictionaries, however, are key-value pair data structures that allow for associative arrays, where data is accessed via a unique key. This makes dictionaries ideal for fast lookup operations, where a known key is used to retrieve an associated value . Unlike lists, dictionaries are unordered and their elements do not retain the order of insertion. These structural characteristics make lists suitable for ordered data sequences, while dictionaries are used for tasks involving mapping data relationships .

The zip() function in Python is effectively used to combine two or more sequences (e.g., lists, tuples) into a list of tuples. Each tuple contains one element from each of the sequences passed to the function. This is particularly useful in applications where the paired elements from different sequences need to be processed together, such as iterating over two lists simultaneously, creating dictionary-like structures from keys and values lists, or transforming parallel sequences into a unified format. The function is advantageous for maintaining the parallel association of data .

Tuples offer a significant advantage over lists when used as keys in dictionaries because they are immutable. This immutability ensures the integrity and consistency of the keys, as they cannot be altered, thus maintaining the validity of the dictionary's structure over time. Additionally, the immutability of tuples provides performance benefits, such as faster iteration, making them preferable for consistent data storage requirements . Lists, being mutable, would not maintain the fixed state required for reliable dictionary keys .

Python provides several built-in dictionary methods that facilitate efficient dictionary operations. Methods like get() allow safe access to values with provided defaults, avoiding key errors. The keys(), values(), and items() methods return views of the dictionary's keys, values, and key-value pairs, respectively, which are useful for iteration. The update() method merges another dictionary or iterable of key-value pairs into the dictionary, while clear() removes all items for reset. methods like pop() and popitem() support removal and retrieval of elements . These methods enhance functionality by offering predictable, standardized operations on dictionaries.

To update a dictionary's key-value pairs efficiently, Python provides direct assignment and update methods. You can directly assign a new value to an existing key to update it, or assign a value to a new key to add it. The update() method can be used to update the dictionary with key-value pairs from another dictionary or an iterable of key-value pairs. To change the structure, you may add or delete keys or use dictionary comprehension to filter or transform elements. The del statement can be employed to remove specific items, while clear() removes all items, effectively resetting the dictionary's structure .

The reduce() function in Python reduces a sequence by applying a specified function cumulatively to the items, from left to right, so as to reduce the sequence to a single value. It operates by calling the function on the first two items of the sequence, then on the result and the next item, and so forth . A practical example is calculating the sum of all values in a list, where reduce() applies the addition operation successively to yield the total sum .

Variable-length arguments in Python enhance function flexibility by allowing functions to accept an arbitrary number of arguments, which is particularly useful in scenarios where the exact number of arguments is not known beforehand. The typical syntax involves using the asterisk (*) before a parameter, such as *args for tuples or **kwargs for dictionaries, where args and kwargs can be iterated over or accessed as needed within the function. This capability is vital for implementing generic functions that can gracefully handle diverse input scenarios and support extensibility with minimal changes to function definitions, promoting reusability and adaptability .

You might also like