Python Language List
Internal
Overview
A list is a mutable sequence type that contains zero or more elements and whose elements can be of the same type or different types. The elements of a list are ordered. As mentioned, the list is mutable, in that a list can be changed in-place, new elements can be added to it, and existing elements can be overwritten. Unlike a set, a list can contain the same element multiple times, a list element does not need to be unique in the list.
List type()
The function type()
applied to a list returns:
<class 'list'>
To check whether an instance is a list:
i = ...
if type(i) is list:
...
For list
subclasses:
i = ...
if isinstance(i, list):
...
Create a List
A list can be created with the []
syntax, with the list()
functions and with list comprehensions.
Create a List with []
A list can be created specifying the list elements, separate them by comma and enclose them in square brackets.
empty_list = []
some_list = ['A', 'B', 'C']
some_other_list = ['A', 2, 3.0, ['B', 4]]
Create a List or Convert other Data Type to a List with list()
An empty list can be created with the list()
function:
empty_list = list()
The list()
function converts the data types to lists. The data types that can be converted are:
String to List
s = 'abc'
l = list(s) # l is ['a', 'b', 'c']
Tuple to List
t = ('a', 'b', 'c')
l = list(t) # l is ['a' ,'b', 'c']
Access a List
Test for Empty List
Test for Existence of an Element in List
Access an Element in List
The element of a list can be accessed using the [<offset>]
syntax. The offset is zero-based, and it can be positive or negative.
l = ['a', 'b', 'c']
print(l[0])
Negative indices count backward from the end, the last element is identified with a -1 index. Think about it as index
= len(list)
- negative-index
.
l = ['a', 'b', 'c']
print(l[-1]) # displays "c"
print(l[-2]) # displays "b"
⚠️ In case of both positive and negative indices, the offset should be valid. If the indices fall outside of the list's bounds, IndexError: list index out of range
exception is thrown.
Length of a List
The number of elements is given by the len()
function:
l = [...]
print(len(l))
Iterate over a List
l = ['A', 'B', 'C']
for i, e in enumerate(l):
print(f'index: {i}, element: {e}')
Slices
A sub-sequence of a list can be extracted with a slice. The slice [<start-index>:<end-index>:<step>]
specified the index of the last element, and the index of the first element not included in slice, and the step. The step is optional, the default value is 1.
l = ['a', 'b', 'c', 'd', 'e', 'f']
print(l[:]) # starts from the beginning and ends after the end of the list, prints ['a', 'b', 'c', 'd', 'e', 'f']
print(l[2:4]) # prints ['c', 'd']
print(l[2:4:2]) # prints ['c']
The step can be negative, which means the slice starts at the end and goes from right to left.
l = ['a', 'b', 'c', 'd', 'e', 'f']
print(l[::-1]) # prints ['f', 'e', 'd', 'c', 'b', 'a']
Assign the sublist to l
:
l = l[:-1]
Modify a List
Modify Individual Elements
Modify an Element Identified by [offset]
An element of a list can be modified using the [<offset>]
syntax. The offset is zero-based, and it can be positive or negative, as described in Access an Element in List.
l = ['a', 'b', 'c']
l[1] = 'd'
print(l[1])
Append an Element
The traditional way of adding items to a list is to append()
them one by one to the end of the list. The invocation increases the length of the list.
l = [1, 2, 3]
l.append(10)
print(l) # will display [1, 2, 3, 10]
append()
adds the argument to the end of the list, as one element, even if it's another list. To extend the list by adding the elements individually, use extend()
or +=
.
Append a List
A list can be extended with another list with the extend()
function:
l1 = [1, 2, 3]
l2 = [10, 20]
l1.extend(l2)
print(l1) # will display [1, 2, 3, 10, 20]
The extend()
function is equivalent with the +=
operator:
l1 = [1, 2, 3]
l2 = [10, 20]
l1 += l2
print(l1) # will display [1, 2, 3, 10, 20]
Insert an Element in the Middle of a List
insert(offset, element)
inserts an element in the middle of the list. For a 0 offset, the function will insert the element at the beginning of the list. If the offset falls outside the list boundaries, it will add at the end of the list without throwing an exception. When an item is deleted from a list, the items that follow it shift left to take its position and the length of the list decreases by one.
l1 = [1, 2, 3]
l1.insert(1, 10)
print(l1) # will display [1, 10, 2, 3]
l1.insert(1000, 20)
print(l1) # will display [1, 10, 2, 3, 20]
l1.insert(-1000, 40)
print(l1) # will display [40, 1, 10, 2, 3, 20]
Delete an Element by Offset
To delete an element by offset use del list_name[<offset>]
. The offset can be positive or negative. Using -1 deletes the last element from the list.
l = [1, 2, 3]
del l[0] # the list is now [2, 3]
del l[-1] # the list is now [2]
Delete an Element by its Value
remove()
deletes an element from a list based on its value. If more than one elements have the same value, only the first one is removed.
Return and Remove an Element with pop()
An element identified by offset can be returned and deleted from the list. Positives and negative offsets work.
l = [1, 2, 3]
print(l.pop(1)) # displays 2
print(l) # displays [1, 3]
Delete All Elements
List Processing
split(), join()
A string can be converted into a list containing tokens delimited by separators in the string using the split()
function. split()
is a string function. The elements of the newly created list are strings.
s='a b c'
l = s.split(' ') # l is ['a', 'b', 'c']
If two separators occur in succession in the string, the list contains an empty string:
s='a,,b,c'
l = s.split(',') # l is ['a', '', 'b', 'c']
Sorting
TO DEPLETE
Join the List Elements in a String
Join the elements of the given list in a string, using '-' as separator:
li = ['a', 'b']
s = '-'.join(li)
Only works if the list elements are strings.
Extract Elements from the Tail of the List Starting with a Certain Index
l = [1, 2, 3]
print(l[0:]) # prints [1, 2, 3]
print(l[1:]) # prints [2, 3]
print(l[2:]) # prints [3]
print(l[3:]) # prints [] (empty list)
print(l[4:]) # prints [] (empty list)
Extract Elements from the Head of the List Counting from the Tail
TODO
Copy a List
Multi-Dimensional Lists
m = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
print(m[2][1]) # prints 8