A list is a data structure in Python that is a mutable, or changeable, ordered sequence of elements. Each element or value that is inside of a list is called an item. Just as strings are defined as characters between quotes, lists are defined by having values between square brackets [ ].
Lists, like arrays, are indexed starting at zero. The first element in a list is the "zero-th" element. In the example above (thank you for permission to use this image, programiz.com)  we can see also negative numbers, which are helpful if you want to select (or slice) a range of elements from a list.
The first element is in position zero, the second element is position one, and so on...
This answer on stack overflow is a superb overview of slicing:
a[start:stop:step] # items start through stop-1 step a[start:] # items start through the rest of the array a[:stop] # items from the beginning through stop-1 a[:] # a copy of the whole array
There is also the step value, which can be used with any of the above:
a[start:stop:step] # start through not past stop, by step
The key point to remember is that the :stop value represents the first value that is not in the selected slice. So, the difference between stop and start is the number of elements selected (if step is 1, the default).
The other feature is that start or stop may be a negative number, which means it counts from the end of the array instead of the beginning. So:
a[-1] # last item in the array a[-2:] # last two items in the array a[:-2] # everything except the last two items
Similarly, step may be a negative number:
a[::-1] # all items in the array, reversed a[1::-1] # the first two items, reversed a[:-3:-1] # the last two items, reversed a[-3::-1] # everything except the last two items, reversed
Python is kind to the programmer if there are fewer items than you ask for. For example, if you ask for a[:-2] and a only contains one element, you get an empty list instead of an error. Sometimes you would prefer the error, so you have to be aware that this may happen.
Creating a list
# The code below creates a list named polishAnimals polishAnimals = ['Bison', 'Moose', 'Deer', 'Lynx', 'Wolf', 'Beaver', 'Otter']
Accessing a list
# If you want to print a list (kind of ugly) you can simply: print(polishAnimals) # However, it is far more common to slice into a list # The code below accesses the 2nd item in the list named 'polishAnimals' print(polishAnimals) # there is a lot more to slicing in Python.
Inserting into a list
# if we want to add onto a list (append) we could simply use the append method. The code below appends wild board onto the end of our list. polishAnimals.append('wild boar') # if we wanted to replace a certain element, we could simply overwrite it. Below we are replacing the 2nd item of our list with a new animal: polishAnimals = 'Stork'
Deleting an element from a list
# There are a few different ways to remove an element from a list. The first way is to call the remove method. # The remove method works by finding the name of an element. polishAnimals.remove('Moose') # another way to remove an element from a list is to call the pop method. Pop-ing removes an index and return the value you removed. # the line below removes the 2nd element from our list and makes it available for us to use. polishAnimals.pop(1) # we might use the pop method like this: animalsDeleted = polishAnimals.pop # we can also use the del function. del polishAnimals # to delete an entire list, call the clear method (this is only available in Python 3+ polishAnimals.clear
- Construct algorithms using pre- defined sub-programmes, one- dimensional arrays and/or collections.