Python. Списки. Свойства списков. Примеры, которые демонстрируют разные свойства списков




Списки. Свойства списков. Примеры, которые демонстрируют разные свойства списков


Содержание


Поиск на других ресурсах:

1. Что такое список в языке программирования Python? Особенности использования списков в Python

В языке программирования Python список есть тип объекта, который позволяет содержать объекты различных типов: числа, строки, списки и т.п.. Иными словами, список представляет собой запись, в которой объединены объекты различных типов (числа, строки, и т.п.).

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

По сравнению с другими языками программирования в Python работа с списками есть очень удобной. Чтобы реализовать корректную работу со списками в другом, более низкоуровневом языке программирования (например C), нужно приложить немало усилий. В Python списки реализуют все необходимое для обработки коллекций данных.

Списки – это объекты, которые можно непосредственно изменять с помощью операции присваивания.

 

2. Основные свойства списков

Выделяют следующие свойства списков:

  1. Списки это последовательности объектов произвольных типов. Списки – это группы объектов произвольных типов, которые обеспечивают позиционное последовательное размещение элементов в порядке «слева — направо».
  2. Обеспечение доступа к элементу списка по индексу. В Python есть возможность получить элемент списка с помощью операции индексирования (см. п. 5). В этом случае получается элемент списка с заданным индексом. Номера индексов в списке начинаются с 0. Кроме того, можно выполнять получение элементов по срезам и конкатенацию списков.
  3. Переменная длина списков. Количество элементов (объектов) в списке можно изменять. Иными словами, списки можно увеличивать и уменьшать (см. п. 6).
  4. Гетерогенность списков. Под понятием «гетерогенность списков» понимается то, что списки могут содержать другие сложные объекты (см. п. 8).
  5. Произвольное количество вложений списков. Списки могут содержать произвольное количество вложений. То есть, можно создавать списки из списков (см. п. 9).
  6. Списки принадлежат к категории изменяемых объектов. Это свойство означает, что списки могут изменяться непосредственно. Списки поддерживают операции, которые позволяют их изменять, а именно: присваивание по индексу, добавление/удаление элементов по индексу, конкатенация, присваивание срезу.
  7. Возможность содержать массивы ссылок на другие объекты. Списки могут содержать ноль и более ссылок на другие объекты (см. п. 8). Списки могут содержать ссылку на объект (объекты) в случае присваивания этого объекта имени переменной или структуры.

 

3. Примеры создания списков. Создание пустого списка

Пример 1. В примере демонстрируется создание списка с помощью оператора присваивания, оператора цикла while и оператора конкатенации +.

# Примеры создания списков различными способами
# Создание пустого списка
L1 = []

# Формирование списка с помощью операции конкатенации +
i=0
while i<10:
    L1=L1+[i]
    i=i+1
print("L1 = ",L1)

Как видно из программного кода, в строке

L1 = []

создается пустой список.

В результате выполнения вышеприведенного кода будет выведен следующий результат

L1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Пример 2. Создается список символов из объекта типа «строка». Строка состоит из символов. Эти символы могут создать последовательность, то есть список.

# Примеры создания списков различными способами
# Создание списка из итерируемого объекта
L = list('abc') # L = [ 'a', 'b', 'c']
print("L = ",L)

В данном примере создание строки

L = list('abc')

можно написать по другому

L = list("abc")

Результат выполнения программы

L =   ['a', 'b', 'c']

Пример 3. Создается список из непрерывной последовательности целых чисел

# Примеры создания списков различными способами
# Создание списка из непрерырвной последовательности целых чисел
L = list(range(1,10))
print("L = ",L) # L = [1, 2, 3, 4, 5, 6, 7, 8, 9]

Как видно из кода, для получения последовательности 1, 2, …, 9 используется операция

range(1,10)

Для создания списка используется операция

list(range(1,10))

Слово list означает имя типа данных «список» и используется для создания списков

Результат выполнения программы

L = [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

4. Какое назначение операции list?

Операция list используется для создания новой копии списка. Операция list представляет собой имя типа данных «список».

В Python операция list реализована как отдельный класс, содержит большой набор методов работы со списками. Чтобы просмотреть перечень методов класса list в Python Shell нужно набрать

help(list)


Более подробно об использовании методов класса list описывается в теме:

Ниже приведены примеры создания списков с помощью операции list

DAYS = list(range(1,8)) # DAYS = [1, 2, 3, 4, 5, 6, 7]
SYMBOLS = list("Hello") # ITEMS = ['H', 'e', 'l', 'l', 'o']

 

5. Как осуществляется доступ к элементу списка по его индексу. Примеры

Пример 1. В примере создается список из 3-х элементов различных типов. Затем по очереди выводятся значения каждого элемента списка.

>>> myList=[2.5, 8, "Hello"]
>>> myList[0] # вывести элемент списка по индексу 0
2.5
>>> myList[1]
8
>>> myList[2]
'Hello'
>>>

Как видно из примера, нумерация элементов списка начинается с 0.

Пример 2. Использование элемента списка в выражении. Важно, чтобы значение элемента списка было корректным в операциях, которые используются в выражении.

# использование списка в выражении
L=[2,3,4]
x=5
y=x+L[1] # y=5+3=8
print("y = ",y)

LS = ["456", 7, 3.1415]
s = "123"
s += LS[0] # s="123456"
print("s = ", s)

Результат выполнения программы

y = 8
s = 123456

Если попробовать добавить к числу строку

s = s + LS[1] # добавить к числу строку - ошибка!

то интерпретатор Python выведет сообщение об ошибке.

TypeError: can only concatenate str (not "int") to str

 

6. Пример, который демонстрирует свойство увеличения/уменьшения длины списка

В примере продемонстрировано свойство увеличения и уменьшения списка A. Увеличение длины списка выполняется в цикле с помощью операции конкатенации +. Уменьшение длины списка реализовано двумя способами:

  • с помощью цикла while, в котором вычисляется позиция последнего элемента. Количество элементов в цикле определяется операцией len. Удаление элемента осуществляется операцией del;
  • с помощью операции del, в которой задается диапазон удаляемых элементов списка.

Текст программы следующий:

# Примеры увеличения/уменьшения длины списка
# создать список
A = []

# сформировать список из 10 элементов путем ввода с клавиатуры
i=0
while i<10:
    x = float(input("x = "))
    A = A+[x] # увеличение списка
    i=i+1

print("Исходный список")
print("A = ",A)

print("Уменьшение списка A на 3 элемента")
i=0
while i<3:
    n = len(A) # взять длину списка
    del A[n-1] # удалить последний элемент списка
    i=i+1
print("A = ", A)

print("Уменьшение списка еще на 2 последних элемента")
del A[n-3:n-1]
print("A = ", A)

Результат выполнения программы

x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
x = 7
x = 8
x = 9
x = 10
Исходный список
A = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
Уменьшение списка A на 3 элемента
A = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]
Уменьшение списка еще на 2 последних элемента
A = [1.0, 2.0, 3.0, 4.0, 5.0]

 

7. Как определить длину списка? Операция len. Пример

Длина списка – это количество элементов списка. Длина списка определяется операцией len.

Пример. В примере определяется длина списка с помощью операции len.

# Определение длины списка операцией len
A = [ 3.5, 2.8, 'abc', [ 2, 3, False]]
length = len(A)
print("length = ", length) # length = 4

B = [ "Hello world!" ]
length = len(B)
print("length = ", length) # length = 1

C = [ 0, 3, 2, 4, 7 ]
length = len(C)
print("length = ", length) # length = 5

Результат выполнения программы

length = 4
length = 1
length = 5

 

8. Пример создания списка, содержащего другие сложные объекты

В примере создается список с именем D, который содержит другие сложные объекты:

  • два списка с именами A, B;
  • кортеж с именем C;
  • строку с именем STR.

 

# Пример списка, содержащего сложные объекты
# объявляются списки, кортеж и строка символов
A = [] # пустой список
B = [ 1, 3, -1.578, 'abc' ] # список з разнотипными объектами
C = ( 2, 3, 8, -10 ) # кортеж
S = "Hello world!"

# список, содержащий разные сложные объекты
D = [ A, B, C, S ]
print("D = ", D)

Выполнение программы дает следующий результат

D = [[], [1, 3, -1.578, 'abc'], (2, 3, 8, -10), 'Hello world!']

 

9. Пример, демонстрирующий свойство произвольного количества вложений списков

В примере формируется список L, включающий два подсписка

# Произвольное количество вложений списков
L = [ [ 'abc', 2.5, 117 ], [ 29, False, 'DEF', "Hello" ] ]

# вывод элементов списка
print("L[0][1] = ", L[0][1]) # L[0][1] = 2.5
print("L[0][2] = ", L[0][2]) # L[0][2] = 117
print("L[1][0] = ", L[1][0]) # L[1][0] = 29
print("L[1][2] = ", L[1][2]) # L[1][2] = 'DEF'

Результат выполнения программы

L[0][1] = 2.5
L[0][2] = 117
L[1][0] = 29
L[1][2] = DEF

 

10. Какой результат даст операция присваивания списков B=A?

Если выполнить операцию присваивания списков B=A, то два имени будут указывать на один и тот же список. Это значит, что изменения в списке B будут влиятьна список A. Точно также, изменения в списке A будут влиять на список B.

Для того, чтоб из списка A создать другой список B (копию списка A), нужно использовать операцию list.

Например.

# Особенности операции присваивания =
# Создать список A
A = list(range(1,10)) # A = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# вызов операции присваивания
B = A # Имена B и A указывают на один и тот же список

# изменить список B
B[3] = 100 # также изменяется список A

# Создать копию списка A с помощью операции list
C = list(A) # C = [1, 2, 3, 100, 5, 6, 7, 8, 9]

# изменить список C
C[3] = 777; # изменяется только список C, список A не изменяется

print("A = ", A)
print("B = ", B)
print("C = ", C)

Вышеприведенная программа даст следующий результат

A = [1, 2, 3, 100, 5, 6, 7, 8, 9]
B = [1, 2, 3, 100, 5, 6, 7, 8, 9]
C = [1, 2, 3, 777, 5, 6, 7, 8, 9]

 


Связанные темы