Чем список отличается от массива
Перейти к содержимому

Чем список отличается от массива

  • автор:

разница list и array

Нет, в некоторых местах эти слова используют взаимозаменяемо. «Истинного» списка не существует как понятия в принципе, но tuple неизменяем, поэтому в кандидаты не годится. Вряд ли вам кто-то даст ответ на этот вопрос, поэтому проще создать миллион элементов и посмотреть расход памяти, это не так сложно; я не думаю, что для вас это должно иметь разницу, пока вы реально не уперлись в память.

9 дек 2015 в 9:26

да, соглашусть, что многие языки путают эти понятия. Но все же, array — это обычно один непрерывный кусок памяти, а list — это часто связанный список. Исходя из этого, array обычно потребляет меньше памяти, так как списку нужно хранить указатель на следующий элемент.

9 дек 2015 в 9:37

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Строго говоря, связный список и массив — это различные структуры данных, которые не привязаны к конкретному языку программирования.

Массив

Массив — это совокупность однотипных данных, расположенных непрерывно в памяти. Доступ к элементу осуществляется по индексу за O(1) — мы обращаемся непосредственно к нужному участку памяти.

Связанный список

Доступ к элементу в связном списке в среднем занимает O(N) путем перебора элементов в поисках нужного. Способы доступа к элементам отличаются по реализации и от языка программирования. Например, на Java в стандартном классе LinkedList в зависимости от ситуации проход элементов может начинаться как с начала, так и с конца списка. И поиск элемента может осуществляться как по индексу, так и по сравнению элементов.

Связный список требует больших расходов памяти при прочих равных условиях за счет хранения указателей на следующий/предыдущий элементы и особенностей внутренней реализации.

Что касается Python: согласно документации:

Internally, a list is represented as an array; the largest costs come from growing beyond the current allocation size (because everything must move), or from inserting or deleting somewhere near the beginning (because everything after that must move).

Как видим, внутренне list представляет собой массив, для tuple — аналогично.

Массивы и списки в Python

Рассмотрим в уроке массивы и их виды, списки, нумерацию списков и основные методы при работе с ними.

Массивы

Мы уже рассматривали строковой тип данных. Он представляется как массив символов и обозначается как array. Массивы могут быть одномерными и многомерны.

Массивы символов

Перед началом работы с массивами подключаем соответствующий модуль. Для этого введем команду:

from array import *

Создадим массив для данных типа int:

>>> a = array('i', [2, 5, 4, 0, 8]) >>> type(a) >>> a array('i', [2, 5, 4, 0, 8])

Теперь обратимся к каждому из элементов данного массива. Попробуем изменить их и дополнить массив:

>>> a[2] 4 >>> a[6] Traceback (most recent call last): File "", line 1, in a[6] IndexError: array index out of range

Как видите, нельзя обратиться к элементу, которого нет.

Любой массив может содержать данные только одного типа, то есть нельзя использовать int и float в одном массиве. Это является недостатком при работе, для устранения которого были введены списки (list).

Список в Python

Список в Python похож на массив. Различие в том, что в списках можно хранить объекты различных типов данных. Размер списка не статичен и поддается изменениям.

На программном уровне переменная, определяемая как список, содержит ссылку на структуру в памяти, которая хранит ссылки на какие-либо другие объекты или структуры.

Списки в Python

Рассмотрим на примере:

>>> a = [] >>> type(a)

Теперь добавим элементы и проверим доступ к ним:

>>> a = [1,0.34,"Hello"] >>> a [1, 0.34, 'Hello'] >>> a[2] 'Hello' >>> a[0] 1 >>> a[1] 0.34

Нумерация списка в Python

Прямая и обратная нумерация

По умолчанию нумерация начинается с 0.

a = [1, 'abc', h, 0,256] 0 1 2 3 

При обратной нумерации элементы считаются с конца и начинаются с -1:

a = [1, 'abc', h, 0,256] -4 -3 -2 -1

С помощью этих индексов можем обратиться к каждому элементу списка:

a[0] >>> 1 a[-2] >>> h

Срез

Срез — это некий диапазон символов, к которому мы обращаемся. При срезе вторым числом мы указываем номер символа, который не входит в диапазон:

a[0:2] #[1, 'abc'] a[-4:-2] #[1, 'abc']

Мы можем обратиться и к символам с использованием разных нумераций одновременно:

a[0:-2] #[1, 'abc']

Если мы не укажем одну из границ среза, то программа принимает за границу первый или последний символ:

a[:2] #[1, 'abc'] a[2:] #[h, 0,256]

Методы работы со списками

Рассмотрим основные методы работы со списками на примерах.

list.append(x)

Добавляет в конце списка новый элемент x:

>>> a = [0,0.1,"один"] >>> a.append(321) >>> a [0, 0.1, 'один', 321]
list.insert(i,x)

Вставка элемента x на место i (нумерация начинается с нуля):

>>> a = [0,0.1,"один"] >>> a.insert(1,321) >>> a [0, 321, 0.1, 'один']
list.extend(L)

Добавляет в конец списка список L:

>>> a = [0,0.1,"один"] >>> b = ["два",3,4.1] >>> a.extend(b) >>> a [0, 0.1, 'один', 'два', 3, 4.1]
list.remove(x)

Удаляет первый встреченный элемент со значением x:

>>> a = [0,0.1,"один",0] >>> a.remove(0) >>> a [0.1, 'один', 0]
list.pop(i)

Возвращает элемент, размещенный по индексу i, удаляет его из списка:

>>> a = [0,0.1,"один",0] >>> a.pop(3) 0 >>> a [0, 0.1, 'один']
list.count(x)

Возвращает количество элементов, равных x:

>>> a = [0,0.1,"один",0] >>> a.count(0) 2
list.clear()
>>> a = [0,0.1,"один",0] >>> a [0, 0.1, 'один', 0] >>> a.clear() >>> a []

Курсы Робикс, в которых изучается этот материал.

  1. Программирование на Python в Minecraft
  2. Duckietown робот с системой Автопилота

В чем отличие списка от массива js?

Lynn

yavaskript, спустившись чуть ниже высокоуровневых языков, легко обнаружить, что разнотипный массив изнутри выглядит как массив указателей либо строк.

yavaskript @yavaskript

Adamos, этого я не знаю и спорить не буду 🙂 Но в данном случае вопрос о JS, и здесь есть только массив, который может содержать в себе мешанину из типов

Vlatqa

это утверждение верно с точки зрения питона, в js не существует типа список
Ответы на вопрос 1
пофиг на чем писать

Отмеченный ответ не имеет ничего общего с js. Массив в js, это не тот массив, что в C++ или Java.

В большинстве языков, список, это абстракция, которая предоставляет возможность пройтись по элементам и дает какое-то api на доступ, вставку, удаление и т.д. Список внутри может быть чем угодно, может быть массивом, может быть односвязным списком, бинарным деревом, хэш-таблицей, в которой будешь обращаться вроде как к индексу, а за ним, на самом деле хэш.
Массив, действительно, это рядом стоящие в памяти значения. Преимущества, быстрый доступ, т.к он идет всего лишь по сдвигу от начала массива, но вставить невозможно, т.к. под массив выделяется конкретный размер памяти с учетом его типа. Массив можно только пересоздать с новыми значениями.

Поэтому ответом на вопрос может быть то, что Список — это абстракция, а Массив — это его конкретная реализация.

Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

javascript

  • JavaScript

Почему запрос берет url с http js?

  • 1 подписчик
  • 2 часа назад
  • 16 просмотров

javascript

  • JavaScript
  • +1 ещё

Не работает фильтер js?

  • 1 подписчик
  • 4 часа назад
  • 34 просмотра

Чем отличается массив от списка Python – таблица сравнения

Массивы и списки Python являются важной структурой данных Python. И список, и массив используются для хранения данных в Python. Эти структуры данных позволяют нам индексировать, нарезать и повторять. Но они отличаются друг от друга. В этом руководстве мы узнаем существенные различия между списком и массивом Python.

Вступление

Как мы знаем, Python имеет обширные структуры данных, такие как списки, кортежи, наборы и словари, которые предоставляют множество возможностей и функций. Списки являются наиболее эффективной и простой в использовании структурой данных в Python.

С другой стороны, Python не предоставляет встроенной поддержки массива. Нам нужно импортировать модуль массива, или использовать модуль массива из пакета NumPy в программе Python. И это основное различие между массивом и списком. Прежде чем углубиться в эту тему, давайте кратко познакомимся с обеими структурами данных.

Список

Список в Python – это встроенная линейная структура данных Python. Он используется для последовательного хранения данных. Мы можем выполнить несколько операций для вывода списка, например индексацию, итерацию и нарезку. Список включает следующие функции:

  • Элементы списка заключаются в квадратные скобки, а каждый элемент отделяется запятой(,).
  • Это изменяемый тип, что означает, что мы можем изменять элементы списка после их создания.
  • Списки упорядочены, элементы хранятся в определенном порядке. Мы можем использовать индексацию для доступа к элементу списка.
  • Мы можем хранить элементы с разными типами данных и комбинировать строки, целые числа и объекты в одном списке.

Ниже приведены примеры списка.

list = [31, 60, 19, 12] print(list) print(type(list))

[31, 60, 19, 12]

# creating a list containing elements # belonging to different data types list1 = [1,"Yash",['a','e']] print(list1)
[1, 'Yash', ['a', 'e']]

В приведенном выше списке первым элементом является целое число; второй – это строка, а третий – список символов.

Массивы

Массив в Python – это также линейная структура данных, в которой хранятся данные. Он также упорядочен, изменяем и заключен в квадратные скобки. Он может хранить неуникальные элементы. Но есть ограничения на хранение значений разных типов данных.

Для работы с массивом в Python нам нужно импортировать либо модуль массива, либо Numpy.

import array as arr or import numpy as np

Элементы размещаются в непрерывной области памяти, что позволяет нам легко изменять, добавлять, удалять и получать доступ к элементу. Более того, нам нужно указать тип данных. Давайте разберемся в следующих примерах.

Import array as arr array_1 = arr.array("i", [31, 60,19, 12]) print(array_1) print(type(array_1))

array(‘i’, [31, 60, 19, 12])

Пример – 2: Использование массива Numpy

import numpy as np array_sample = np.array(["str", 'sunil', 'sachin', 'megha', 'deepti']) print(array_sample) print(type(array_sample))

[‘numbers’ ‘sunil’ ‘sachin’ ‘megha’ ‘deepti’]

Мы указали тип строки и сохранили строковое значение.

Разница между массивом и списком

Здесь мы обсудим различия между массивом и списком.

Список Массив
1. В списке могут храниться значения разных типов. Он может состоять только из значений одного типа.
2. Список не может обрабатывать прямые арифметические операции. Массив может напрямую обрабатывать арифметические операции.
3. Списки представляют собой встроенную структуру данных, поэтому нам не нужно их импортировать. Перед работой с массивом нам необходимо импортировать его модуль.
4. Списки менее совместимы, чем массивы для хранения данных. Массивы более совместимы, чем список.
5. Он потребляет большой объем памяти. Это более компактный по объему памяти по сравнению со списком.
6. Подходит для хранения более длинной последовательности элементов данных. Подходит для хранения более короткой последовательности элементов данных.
7. Мы можем распечатать весь список, используя явный цикл. Мы можем распечатать весь список без использования явного цикла.
8. Он может быть вложенным, чтобы содержать различные типы элементов. Он может содержать любые вложенные элементы одинакового размера.

Мы обсудили различия между массивом и списком. Оба типа данных важны в Python, и у обоих есть некоторые ограничения. Массивы обычно используются для анализа данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *