Ничего особенного
Если кто-то попросит вас составить список всех электронных устройств в вашем доме, вы ответите так:
- Умные часы
- Мобильный
- 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 и найдите прекрасную работу