Python List Data Type
Introduction
In Python, we have already seen that fundamental data types such as int, float, bool, complex, and str are used to store individual values. However, in real-world programming, it is very rare that we only deal with a single value at a time. Most applications require handling multiple related values together, such as a list of student names, employee IDs, or transaction records.
This is where collection data types come into the picture.
1. Fundamental vs Collection Data Types
Let us begin by revisiting a simple concept.
a = 10 # int
b = 10.5 # float
c = True # bool
d = 10 + 20j # complex
e = "Durga" # string
Each variable here holds only one value. To store a group of values as a single entity, then fundamental data types are not sufficient. You must use collection data types.
2. Collection Data Types in Python
Python provides several collection types:
- List
- Tuple
- Set
- Frozenset
- Dictionary
- Range
- Bytes / Bytearray
Each of these serves a different purpose depending on:
- Whether order matters
- Whether duplicates are allowed
- Whether data is key-value based
3. Introduction to List
A list is used when:
- You want to store multiple values
- Order of elements is important
- Duplicate values are allowed
A list is a collection of values where order is preserved and duplicates are allowed.
4. List Representation
A list is represented using square brackets [].
l = [10, "Durga", 20, 10, 30]
- Total elements = 5
- Duplicate value 10 appears twice
- Elements are of different types
5. Order is preserved in List
The order in which elements are inserted is the same order in which they are stored and displayed.
l = [10, "Durga", 20, 10, 30]
print(l) # [10, 'Durga', 20, 10, 30]
6. Duplicates are Allowed in List
You can store the same value multiple times.
l = [10, 10, 10]
No restriction exists on duplicate entries.
7. Heterogeneous Data Allowed
A list can contain different types of data.
l = [10, "Hello", True, 10.5]
This flexibility makes lists extremely powerful.
8. Checking Type of List
l = [10, "Durga", 20]
print(type(l)) # <class 'list'>
9. Indexing in List
Since order is preserved, indexing is supported.
l = [10, "Durga", 20, 10, 30]
print(l[0]) # First element 10
print(l[-1]) # Last element 30
- Index starts from 0
- Negative index starts from -1 (last element)
10. Slicing in List
Lists support slicing using the syntax:
list[start:end]
11. Creating an Empty List
Sometimes we need to start with an empty structure.
l = []
This creates an empty list.
12. Adding Elements (append)
To add elements dynamically, we use:
l.append(value)
Example
l = []
l.append(10)
l.append(20)
l.append(30)
l.append(40)
print(l) # [10, 20, 30, 40]
13. Removing Elements
To remove an element:
l.remove(value)
Example
l = [10, 20, 30, 40]
l.remove(30)
print(l) # [10, 20, 40]
14. Growable Nature of List
One of the most important features of lists is: Lists are growable in nature.
This means:
- You can add elements
- You can remove elements
- Size is not fixed
This makes lists very flexible compared to arrays in other languages.
15. Mutability of List
Lists are Mutable. Mutable means that we can modify the existing object without creating a new one.
l = [10, 20, 30, 40]
l[0] = 7777
print(l) # [7777, 20, 30, 40]