Python. Работа со списками.
Под списком понимается набор элементов, следующих в определённом порядке. Что может храниться в списке? Да что угодно! Например, имена всех членов вашей семьи, список товаров, список всех улиц города. В списке могут храниться также и другие списки и вообще самые разные объекты. Например:
ls=["Иванов","Петров","Сидоров"] print(ls)
Программа выдаст:
[‘Иванов’, ‘Петров’, ‘Сидоров’]
Вы скажите: ну и что? На самом деле списки — это довольно таки мощный инструмент. Допустим, у вас есть файл, содержащий слова. Вы хотите загрузить эти слова в память компьютера и как-то обработать их. А количество слов заранее неизвестно. Удобный способ сделать это — загрузить файл именно в список.
О том, как вообще грузить текстовую информацию из файла, см. уроки: Python. Взлом шифров, Python. Взлом шифров. Продолжение и Python. Взлом шифров. Продолжение-2.
Сначала о том, как создаться списки. Их можно создать через [], через list, а также как набор заранее заданный набор значений. Рассмотрим примерю
Через []:
ls=[] ls.append("Иванов") ls.append("Петров") ls.append("Сидоров") print(ls)
Через list:
ls=list() ls.append("Иванов") ls.append("Петров") ls.append("Сидоров") print(ls)
Вы спросите, а в чем разница? Сейчас продемонстрирую наглядно:
ls1=list("Иванов") print(ls1) ls2=["Иванов"] print(ls2)
Результат работы данной программы будет такой:
[‘И’, ‘в’, ‘а’, ‘н’, ‘о’, ‘в’]
[‘Иванов’]
Иными словами, list из строки может сделать список, содержащий отдельные символы данной строки. И не только из строки. По сути дела, функция list осуществляет преобразование типов. Например, она позволит конвертировать из кортежа (тьюпла) в список:
ls1=list(("Иванов","Петров","Сидоров")) print(ls1)
Тьюпл — это как бы список, но не список. В смысле, что он тоже состоит из нескольких элементов. Только вот при создании списка мы его элементы указываем в квадратных скобках, а при создании тьюпла — в круглых. В чем разница между тьюплом и списком? Список можно менять, а тьюпл — неизменяемый. Он как разнородный массив (может состоять из элементов разного типа). По сути, тьюпл — это что-то вроде списка-константы.
При помощи list можно также создать список из списка (по сути, сделать копию). Также копию списка можно сделать при помощи [:]
ls1=[1,2,3,10] print(ls1) ls2=ls1[:] print(ls2)
Добавить элемент в список можно командой append, вы это уже знаете, я писал выше. Раз можно добавить, значит, можно и удалить. команда remove:
ls1=[1,2,3,10] print(ls1) ls1.remove(2) print(ls1)
Обратите внимание, что в качестве параметра указываем не индекс а элемент. Если укажем элемент, которого нет в списке, то питон выдаст сообщения об ошибке. Можно удалить и по индексу, командой del:
ls1=[1,2,3,10] print(ls1) del ls1[0] print(ls1)
Индексы начинаются с нуля.
Доступ к конкретному элементу списка также возможен по индексу через []:
ls=[1,2,3,10] print(ls[1]) ls[2]="fff" print(ls)
Программа выдаст:
2
[1, 2, ‘fff’, 10]
Внезапно, но можно указать и отрицательный индекс. то будет означать, что надо брать элементы с конца, -1 возьмет последний элемент, — 2 — предпоследний и так далее:
ls=[1,2,3,10] print(ls[-1]) print(ls[-2]) ls[-1]=333 print(ls)
Программа выдаст:
10
3
[1, 2, 3, 333]
Из списка можно вычленить подсписок, указав начальный и конечный элемент (конечный не включительно):
ls=[1,2,3,10,"sdfds",44,11] print(ls[3:5])
Выдаст:
[10, ‘sdfds’]
Внезапно, но выбранный диапазон можно изменить:
ls=[1,2,3,10,"sdfds",44,11] ls[3:5]=4,7,9 print(ls)
Программа выдаст
[1, 2, 3, 4, 7, 9, 44, 11]
Изменяя диапазон, можно добавить элемент в конец списка, как это делает метод append:
ls=[1,2,3,10,"sdfds",44,11] ls[len(ls):]=4,7,9 print(ls)
Программа выдаст:
[1, 2, 3, 10, ‘sdfds’, 44, 11, 4, 7, 9]
Чтобы добавить в список другой список, нужно воспользоваться командой extend (не append), так как последняя добавить не элементы списка, а сам список, как элемент данного списка:
ls1=[1,2,3,10,"sdfds",44,11] ls2=[1,2,3,10,"sdfds",44,11] ls3=[3,4,5] ls1.extend(ls3) ls2.append(ls3) print(ls1) print(ls2)
Программа выдаст:
[1, 2, 3, 10, ‘sdfds’, 44, 11, 3, 4, 5]
[1, 2, 3, 10, ‘sdfds’, 44, 11, [3, 4, 5]]
На этом пока урок окончен, но у списков есть еще много интересных возможностей, поэтому, продолжение следует.
Comments
So empty here ... leave a comment!