Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to make an array in Python

Introduction

Arrays are a fundamental concept in computer programming, and Python is no exception. They allow us to store and manipulate collections of data efficiently, making them a vital tool for any aspiring programmer. If you're new to programming or just starting with Python, this blog is for you! We'll walk through the basics of arrays in Python, explain some common jargon, and provide plenty of examples to get you started.

What is an Array?

An array is a collection of elements (values or variables) that are stored in a contiguous block of memory. Each element in an array can be accessed using a unique index (a numeric value) that represents its position in the array. The simplest analogy for an array is a row of lockers. Each locker is a space where you can store something (like an integer or a string), and each locker has a unique number (the index) that allows you to identify and access it.

In Python, arrays are not a built-in data structure like lists or tuples. Instead, we can use the array module, which provides a more efficient way of storing and manipulating collections of data. The array module is particularly useful when working with large datasets or when you need precise control over the memory usage of your program.

Creating an Array in Python

Before we can create an array in Python, we need to import the array module. This can be done using the following line of code:

import array

Now that we have the array module imported, we can create an array using the array.array() function. This function takes two arguments: the data type of the elements in the array (known as the "typecode"), and an optional initial sequence of elements.

Here's an example of how to create an empty array of integers:

import array

my_array = array.array('i')
print(my_array)

This will output:

array('i')

In this example, 'i' is the typecode representing signed integers. We'll discuss more about typecodes in the next section.

To create an array with initial elements, you can pass a sequence of elements (like a list or tuple) as the second argument:

import array

initial_elements = [1, 2, 3, 4, 5]
my_array = array.array('i', initial_elements)
print(my_array)

This will output:

array('i', [1, 2, 3, 4, 5])

Typecodes

Typecodes are single-character strings that represent the data type of the elements in an array. They help ensure that the memory used by the array is efficiently allocated according to the type of data being stored. Some common typecodes include:

  • 'i': signed integer
  • 'I': unsigned integer
  • 'f': floating-point
  • 'd': double-precision floating-point
  • 'b': signed byte
  • 'B': unsigned byte
  • 'u': Unicode character

You can find a full list of typecodes in the Python documentation.

Accessing and Modifying Array Elements

Now that we know how to create an array, let's learn how to access and modify its elements. This can be done using indexing and slicing, similar to how you would work with lists and tuples in Python.

Indexing

To access an individual element in an array, you can use its index (the unique numeric value that represents its position in the array). Indexing in Python arrays starts at 0, which means the first element is at index 0, the second element is at index 1, and so on. Here's an example:

import array

initial_elements = [1, 2, 3, 4, 5]
my_array = array.array('i', initial_elements)

print(my_array[0])  # Output: 1
print(my_array[2])  # Output: 3

You can also use negative indexing to access elements from the end of the array. For example, -1 refers to the last element, -2 refers to the second-last element, and so on:

print(my_array[-1])  # Output: 5
print(my_array[-3])  # Output: 3

To modify an element in the array, you can use the assignment operator (=) with the element's index:

my_array[1] = 42
print(my_array)  # Output: array('i', [1, 42, 3, 4, 5])

Slicing

Slicing allows you to access a range of elements in an array. To create a slice, you can use the colon (:) operator inside the indexing brackets ([]). The syntax for slicing is [start:end:step], where start is the index of the first element you want to include, end is the index of the first element you want to exclude, and step is the number of indices between elements in the slice. If you omit the start, it will default to 0; if you omit the end, it will default to the length of the array; and if you omit the step, it will default to 1.

Here's an example of slicing in an array:

import array

initial_elements = [1, 2, 3, 4, 5]
my_array = array.array('i', initial_elements)

print(my_array[1:4])  # Output: array('i', [2, 3, 4])

In this example, the slice [1:4] includes the elements at indices 1, 2, and 3 (but not the element at index 4).

You can also use slicing to modify a range of elements in an array. To do this, you can assign a new array with the same typecode and length as the slice:

my_array[1:4] = array.array('i', [7, 8, 9])
print(my_array)  # Output: array('i', [1, 7, 8, 9, 5])

Array Methods

The Python array module provides several useful methods for working with arrays. Some common methods include:

  • append(): Adds an element to the end of the array.
  • extend(): Appends the elements of another array or sequence to the end of the array.
  • insert(): Inserts an element at a specified position in the array.
  • remove(): Removes the first occurrence of a specified element from the array.