Top.Mail.Ru

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!

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

Sidebar