Ничего особенного

Если кто-то попросит вас составить список всех электронных устройств в вашем доме, вы ответите так:

  • Умные часы
  • Мобильный
  • TV
  • Ноутбук

Другой человек, который задал вам вопрос, поймет.

Но чтобы Python понял тот же список, вы должны написать его так:

items = [“Smartwatch”, “Mobile”, “TV”, “Laptop”]

Вам не нужно упоминать какой-либо тип объявления для вашего списка. Вам не обязательно сообщать Python, что ваш список items является «набором строк».

Если вы программист Python, вы, вероятно, слышали о списке Python и, возможно, использовали его.

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

Если вы знакомы с основами списка Python, пропустите этот раздел.

Большинство программистов понимают основы списков Python.

Но для тех, кто не понимает списки Python, я собираюсь дать вам базовое введение в него.

Чтобы создать список в Python, вам нужно написать такой код:

name_of_list = ["Smartwatch", "Mobile", "TV", "Laptop"]

Вы можете обращаться со списком в Python как с массивом на другом языке, таком как C.

Как и в массиве, элементы списка нумеруются, начиная с 0. В приведенном выше примере строка «Smartwatch» будет считаться элементом номер 0, а последний элемент «Ноутбук» будет считаться элементом номер 3.

Доступ к элементам списка

Для доступа к элементам списка вы должны использовать квадратную скобку.

name_of_list = ["Smartwatch", "Mobile", "TV", "Laptop"]

print(name_of_list[0])

#Output: Smartwatch

Вы также можете использовать методы списка для внесения изменений в списки. Здесь я расскажу о двух таких методах.

В следующем примере я использовал метод append для добавления нового элемента в список. Вы можете добавить любое количество элементов в список.

name_of_list = ["Smartwatch", "Mobile", "TV", "Laptop"]

name_of_list.append("iPad")

print(name_of_list)

#Output: ['Smartwatch', 'Mobile', 'TV', 'Laptop', 'iPad']

Если вы хотите удалить элемент из списка. Вы также можете сделать это с помощью метода удаления.

name_of_list = ["Smartwatch", "Mobile", "TV", "Laptop"]

name_of_list.remove("TV")

print(name_of_list)

#Output: ['Smartwatch', 'Mobile', 'Laptop']

Теперь у вас есть общее представление о том, как выглядит список в Python. Пришло время развенчать некоторые ложные убеждения, связанные со списками.

Списки Python на самом деле не являются массивами

Если вы читали предыдущий раздел, я сказал вам относиться к спискам Python как к массиву, присутствующему в других языках.

Но списки Python не совсем похожи на массивы. Оба имеют довольно много отличий.

Давайте посмотрим, чем списки Python не похожи на массивы.

1. Массив должен иметь фиксированный размер

В таких языках, как C и Java, массивы должны иметь фиксированный размер. С массивом вам нужно предварительно выделить память для него.

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

Если вы хотите изменить размер массива в таких языках, как C и Java, вы должны создать новый массив. Как только вы создадите новый массив, вы должны скопировать все элементы в созданный вами новый массив.

Вот пример из языка программирования C.

int arr[2];

arr[0] = 9;
arr[1] = 10;

В приведенном выше примере у нас есть память, предварительно выделенная для массива arr.

Однако список в Python не имеет фиксированного размера. Для этого не нужно предварительно выделять память.

В Python вы можете динамически увеличивать размер списка. Вам не нужно создавать новый список и копировать все элементы из предыдущего списка в новый.

Пример:

items1 = [ 9,7,4]


#You want to add a new element to the list
items1.append(2)


#Print the result
print(items1) #Output: [9,7,4,2]



items2 = [9,6,7]


#You want to remove an element from the list
items2.remove(9)


#Print the result
print(items2) #Output: [6, 7]

В приведенном выше примере вы можете видеть, что размер списка может динамически увеличиваться и уменьшаться. Вам не нужно создавать еще один список и копировать в него элементы.

2. Массивы содержат элементы одного типа данных

В таких языках, как C или Java, массив должен содержать элементы одного и того же типа данных.

Наличие одинаковых элементов типа данных — это и хорошо, и плохо.

Это хорошо, потому что вы знаете, с какими данными вы работаете. Это плохо, потому что наличие элементов с одинаковым типом данных делает его менее гибким.

int arr[2];

arr[0] = 9;
arr[1] = 10;

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

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

Пример:

items = [ 3, "three", 3.0]


print(items[1])


#Output: three

3. Массивы не имеют встроенных функций

В таких языках, как C или Java, массивы не имеют встроенных функций.

Вы не можете использовать методы и напрямую сортировать элементы массива.

Чтобы делать такие вещи, как сортировка, удаление и добавление элементов в массив, вам нужно пройти по массиву и сделать это.

Возьмем пример с языком программирования Си.

int arry = [1,5,7,3,4,2]
int n = 6;

for(int i=0; i<n-1; i++) {
    for(int j=0; j<n-i-1; j++) {
        if(arry[j] > arry[j+1]) {
                // swap arr[j] and arr[j+1]
            int temp = arry[j];
            arry[j] = arry[j+1];
            arry[j+1] = temp;
            
        }
    }
 }

В приведенном выше примере только для сортировки элементов массива мы прошли весь массив arry. Мы использовали пузырьковую сортировку для сортировки элементов массива.

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

Пример:

items = [ 1,5,7,3,4,2]

items.sort();


print(items)


#output: [1, 2, 3, 4, 5, 7]

Я не говорю, что нужно всегда использовать встроенные методы.

Иногда эти встроенные методы могут вызывать проблемы с производительностью.

Некоторые уникальные свойства списков

В предыдущем разделе я писал о том, чем списки отличаются от массивов, которые являются частью таких языков, как C и Java.

Теперь мы рассмотрим некоторые уникальные свойства списков.

4. Списки могут быть вложенными

Большинство программистов, которые переходят с таких языков, как C и Java, считают, что, поскольку списки Python похожи на массивы, они не могут вкладываться друг в друга.

Но это ложное убеждение.

В таких языках, как C или Java, они ограничены одним измерением. Вы не можете вложить другой массив в один массив. У вас не может быть массива массивов, но вы можете иметь массив целых чисел, если хотите.

Вот 2D-массив в C:

int arry[2][3] = {

    {1,2,3},
    {4,5,6}

};
    

В приведенном выше случае я создал массив целых чисел 2×3.

В этом отношении списки Python отличаются от массивов. В Python списки могут содержать другие списки в качестве элементов.

Вы можете создавать сложные структуры данных с помощью списка списков.

Вот пример списка списков:

arry = [[1,2,3],
        [4,5,6]]

Приведенный выше код может создать матрицу целых чисел 2 × 3.

5. В списках Python допускается отрицательное индексирование.

В таком языке, как C++, индексация массива начинается с 0 и увеличивается на единицу с каждым элементом, присутствующим в массиве.

Эти языки не допускают отрицательного индексирования.

Если вы попытаетесь использовать отрицательный индекс, это вызовет ошибку.

int arry[] = {1,3,5,7}


std::cout<< arry[0]<< std::endl;

std::cout<< arry[-1] << std::endl;


//Output

1
Some random value makes no sense

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

В Python списки допускают отрицательное индексирование.

Это означает, что если вы хотите получить доступ к элементам из дальнего правого конца списка, вы можете использовать отрицательную индексацию.

Давайте посмотрим на пример:

items = ["hi", "hello", "bye"]


print(items[0])

print(items[1])

print(items[-1])


#output:
hi
hello
bye

В приведенном выше примере мы используем отрицательное индексирование.

  • -1 относится к последнему элементу списка.
  • -2 относится к предпоследнему элементу списка.

Хотите читать еще такие интересные истории?

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

Вы можете присоединиться здесь.

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

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • 👏 Хлопайте за историю и подписывайтесь на автора 👉
  • 📰 Смотрите больше контента в публикации Level Up Coding
  • 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
  • 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"

🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу