Open In App

What is the difference between lists and arrays?

Last Updated : 06 Feb, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

In programming, lists and arrays are data structures used to organize and store data. Both have their unique features and purposes. Lists are dynamic and flexible, allowing for easy resizing during runtime, while arrays are static with a fixed size. This difference impacts memory usage and performance.

What are Lists?

Lists are a versatile data structure in programming, designed to hold a collection of elements with the flexibility to handle different data types. Unlike arrays, lists are dynamic, meaning their size can change during the execution of a program. This adaptability makes lists particularly useful for tasks involving the addition or removal of elements. Lists provide a convenient interface for developers to manage and organize data, allowing for efficient operations such as appending, inserting, or deleting elements. The ability to dynamically adjust their size makes lists a powerful tool for handling varying amounts of data in a program.

What are Arrays?

Arrays are a fundamental data structure in programming that allows you to store a collection of elements of the same data type in a contiguous block of memory. Each element in the array is identified by an index, representing its position. The key characteristic of arrays is that they offer quick and direct access to elements using these indices. They provide a systematic way to organize and manage data, making it efficient to retrieve, modify, and manipulate information stored in the array. Arrays are widely used in various programming languages for their simplicity and effectiveness in handling ordered sets of data.

Difference Between Lists and Arrays:

Aspect

Arrays

Lists

Size

Arrays have a fixed size set during creation.

Lists are dynamic and can change in size during runtime.

Data Types

All elements in an array must be of the same data type.

Lists can accommodate elements of different data types.

Memory Allocation

Memory for the entire array is allocated at once during initialization.

Lists dynamically allocate memory as elements are added or removed.

Access Time

Arrays provide constant-time access to elements through indexing.

Lists may have slightly variable access time due to dynamic resizing.

Flexibility

Arrays are less flexible as their size cannot be easily changed.

Lists are more flexible, allowing easy addition or removal of elements.

Memory Efficiency

May lead to memory wastage if size is larger than necessary.

More memory-efficient due to dynamic allocation.

Common Implementations

Common in languages like C/C++.

Common in languages like Python and Java.

Implementation of Lists:

In the provided code example in Python, a list is initialized to store integers (10, 20, 30). Elements are added, accessed by index, modified, and removed. In Python, the append method is used for addition and remove for deletion. The example demonstrates the fundamental operations of creating, modifying, and managing lists in these programming languages.

C++




#include <iostream>
#include <vector>
 
int main() {
    // Creating an empty vector
    std::vector<int> myArray;
 
    // Adding elements to the vector
    myArray.push_back(10);
    myArray.push_back(20);
    myArray.push_back(30);
 
    // Displaying the elements in the vector
    std::cout << "Elements in the vector: ";
    for (int num : myArray) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
 
    // Accessing elements by index
    int firstElement = myArray[0];
    int secondElement = myArray[1];
 
    // Modifying an element
    myArray[1] = 25;
 
    // Removing an element by value
    for (auto it = myArray.begin(); it != myArray.end(); ++it) {
        if (*it == 30) {
            myArray.erase(it);
            break;
        }
    }
 
    // Displaying the updated vector
    std::cout << "Updated vector: ";
    for (int num : myArray) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
 
    return 0;
}
 
// This code is contributed by shivamgupta0987654321


Java




import java.util.ArrayList;
import java.util.Iterator;
 
public class Main {
    public static void main(String[] args)
    {
        // Creating an empty ArrayList
        ArrayList<Integer> myArray = new ArrayList<>();
 
        // Adding elements to the ArrayList
        myArray.add(10);
        myArray.add(20);
        myArray.add(30);
 
        // Displaying the elements in the ArrayList
        System.out.print("Elements in the ArrayList: ");
        for (int num : myArray) {
            System.out.print(num + " ");
        }
        System.out.println();
 
        // Accessing elements by index
        int firstElement = myArray.get(0);
        int secondElement = myArray.get(1);
 
        // Modifying an element
        myArray.set(1, 25);
 
        // Removing an element by value
        Iterator<Integer> iterator = myArray.iterator();
        while (iterator.hasNext()) {
            int element = iterator.next();
            if (element == 30) {
                iterator.remove();
                break;
            }
        }
 
        // Displaying the updated ArrayList
        System.out.print("Updated ArrayList: ");
        for (int num : myArray) {
            System.out.print(num + " ");
        }
        System.out.println();
    }
}


Python3




# Creating an empty list
my_list = []
 
# Adding elements to the list
my_list.append(10)
my_list.append(20)
my_list.append(30)
 
# Displaying the elements in the list
print("Elements in the list:", my_list)
 
# Accessing elements by index
first_element = my_list[0]
second_element = my_list[1]
 
# Modifying an element
my_list[1] = 25
 
# Removing an element
my_list.remove(30)
 
# Displaying the updated list
print("Updated list:", my_list)


C#




using System;
using System.Collections.Generic;
 
class Program
{
    static void Main()
    {
        // Creating an empty list
        List<int> myArray = new List<int>();
 
        // Adding elements to the list
        myArray.Add(10);
        myArray.Add(20);
        myArray.Add(30);
 
        // Displaying the elements in the list
        Console.Write("Elements in the list: ");
        foreach (int num in myArray)
        {
            Console.Write(num + " ");
        }
        Console.WriteLine();
 
        // Accessing elements by index
        int firstElement = myArray[0];
        int secondElement = myArray[1];
 
        // Modifying an element
        myArray[1] = 25;
 
        // Removing an element by value
        for (int i = 0; i < myArray.Count; ++i)
        {
            if (myArray[i] == 30)
            {
                myArray.RemoveAt(i);
                break;
            }
        }
 
        // Displaying the updated list
        Console.Write("Updated list: ");
        foreach (int num in myArray)
        {
            Console.Write(num + " ");
        }
        Console.WriteLine();
    }
}


Javascript




// Creating an empty array
let myArray = [];
 
// Adding elements to the array
myArray.push(10);
myArray.push(20);
myArray.push(30);
 
// Displaying the elements in the array
console.log("Elements in the array:", myArray);
 
// Accessing elements by index
let firstElement = myArray[0];
let secondElement = myArray[1];
 
// Modifying an element
myArray[1] = 25;
 
// Removing an element (in this case, removing by value)
let indexToRemove = myArray.indexOf(30);
if (indexToRemove !== -1) {
    myArray.splice(indexToRemove, 1);
}
 
// Displaying the updated array
console.log("Updated array:", myArray);


Output

Elements in the vector: 10 20 30 
Updated vector: 10 25 


Implementation of Arrays:

In C++, C, Python, Java, and JavaScript, the code creates an array with elements (10, 20, 30), accesses and modifies elements by index, and displays the updated array. The syntax and specific methods differ across languages, but the fundamental array operations remain consistent, showcasing how to manipulate and iterate through arrays.

C++




#include <iostream>
using namespace std;
 
int main() {
    // Creating an array
    int myArray[3] = {10, 20, 30};
 
    // Accessing elements by index
    int firstElement = myArray[0];
    int secondElement = myArray[1];
 
    // Modifying an element
    myArray[1] = 25;
 
    // Displaying the elements in the array
    for (int i = 0; i < 3; ++i) {
        cout << myArray[i] << " ";
    }
 
    return 0;
}


C




#include <stdio.h>
 
int main() {
    // Creating an array
    int myArray[3] = {10, 20, 30};
 
    // Accessing elements by index
    int firstElement = myArray[0];
    int secondElement = myArray[1];
 
    // Modifying an element
    myArray[1] = 25;
 
    // Displaying the elements in the array
    for (int i = 0; i < 3; ++i) {
        printf("%d ", myArray[i]);
    }
 
    return 0;
}


Java




public class ArrayExample {
    public static void main(String[] args) {
        // Creating an array
        int[] myArray = {10, 20, 30};
 
        // Accessing elements by index
        int firstElement = myArray[0];
        int secondElement = myArray[1];
 
        // Modifying an element
        myArray[1] = 25;
 
        // Displaying the elements in the array
        for (int i = 0; i < 3; ++i) {
            System.out.print(myArray[i] + " ");
        }
    }
}


Python3




# Creating an array (using a list)
my_array = [10, 20, 30]
 
# Accessing elements by index
first_element = my_array[0]
second_element = my_array[1]
 
# Modifying an element
my_array[1] = 25
 
# Displaying the elements in the array
for element in my_array:
    print(element, end=" ")


C#




using System;
 
class Program
{
    static void Main()
    {
        // Creating an array
        int[] myArray = { 10, 20, 30 };
 
        // Modifying an element
        myArray[1] = 25;
 
        // Displaying the elements in the array
        foreach (int element in myArray)
        {
            Console.Write(element + " ");
        }
    }
}


Javascript




// Creating an array
let myArray = [10, 20, 30];
 
// Accessing elements by index
let firstElement = myArray[0];
let secondElement = myArray[1];
 
// Modifying an element
myArray[1] = 25;
 
// Displaying the elements in the array
for (let i = 0; i < myArray.length; ++i) {
    console.log(myArray[i]);
}


Output

10 25 30 






In conclusion, arrays offer a fixed-size, contiguous memory structure with efficient element access whereas lists provide dynamic sizing, flexibility, and built-in methods for ease of manipulation. The choice between the two depends on the specific requirements of the application, with arrays excelling in scenarios where fixed-size and direct memory access are critical, and lists proving advantageous for dynamic data and diverse operations. Ultimately, understanding the unique features of each data structure enables developers to make informed decisions based on the demands of their programming tasks.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads