Python. Операции над списками: конкатенация, дублирование, удаление, срез, доступ по индексу




Операции над списками: конкатенация, дублирование, удаление, срез, доступ по индексу


Содержание


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

1. Основные операции работы со списками

Для работы со списками используются следующие основные операции:

  • + – конкатенация списков;
  • * – дублирование списка;
  • len – определение длины списка;
  • del – удаление элемента с списка;
  • присваивание по индексу;
  • использование среза для доступа к элементам списка и изменения списка.

 

2. Пример конкатенации (+) списка

В примере демонстрируется операция добавления (конкатенации) списков

# список L
L=[2,3,4]

# список LS
LS = ["456", 7, 3.1415]

# добавить к списку L список LS
L=L+LS # L = [2, 3, 4, '456', 7, 3.1415]
print("L = ",L)

В результате выполнения вышеприведенного кода, на экран будет выведено

L = [2, 3, 4, '456', 7, 3.1415]

 

3. Пример дублирования списка. Операция *

В примере демонстрируется операция дублирования списка, которая обозначается символом *. Текст программы, которая демонстрирует операцию дублирования списков следующий:

# Дублирование списка
A = [ 1, 3, 'abcde', -0.02 ] # заданный список
B = A # копирование списка A в список B
C = A*3 # дублирование списка A в список C 3 раза (3 копии)

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

В вышеприведенном программном коде сначала создается список A. Затем этот список копируется в список B с помощью операции присваивания =. В строке

C = A*3

список A дублируется в список C 3 раза.

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

A =   [1, 3, 'abcde', -0.02]
B =   [1, 3, 'abcde', -0.02]
C =   [1, 3, 'abcde', -0.02, 1, 3, 'abcde', -0.02, 1, 3, 'abcde', -0.02]

 

4. Удаление элементов из списка. Операция del
4.1. Пример удаления одиночного элемента из списка

Операция del удаляет из списка заданный элемент или диапазон элементов. В нижеследующем примере выполняются следующие операции над списками:

  • создается список A;
  • с списка A создается список B;
  • с списка B удаляется элемент с индексом 2.


Программный код примера

# Операция del
# Создать список
A = [ 1, 2, 3, 4, 5, 6 ]

# Сформировать новый список
B = A[0:5] # B = [1, 2, 3, 4, 5]

# удалить элемент с индексом 2 из списка B
del B[2]

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

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

A = [1, 2, 3, 4, 5, 6]
B = [1, 2, 4, 5]

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

del B[7] # ошибка в индексе

то интерпретатор выдаст следующее сообщение

IndexError: list assignment index out of range

 

4.2. Пример операции del L[i:j] удаления диапазона элементов из списка

 

Операция del позволяет удалять диапазон элементов из списка. В этом случае, через символ : (двоеточие) указывается первый и следующий за последним элементы диапазона, который нужно удалить.

Нижеследующий пример демонстрирует использование операции del для диапазонов чисел:

# Операция del - удаление диапазона
# Создать список A
A = [ 'a', 'b', 'c', 'd', 'e', 'f' ]

# Сформировать новый список B
B = list(A)

# удалить символы 'b' и 'c' из списка B
del B[1:3] # B = ['a', 'd', 'e', 'f']

# Сформировать еще один список C из списка A
C = list(A) # C = [ 'a', 'b', 'c', 'd', 'e', 'f' ]

# удалить из списка C последние 3 элемента
n = len(C)
del C[n-3:n] # C = ['a', 'b', 'c']

# сформировать еще один список D
D = list(A)

# удалить из списка D последний элемент с проверкой на корректность
n = len(D)
if n>0:
    del D[n-1]

# отобразить результат
print("A = ", A)
print("B = ", B)
print("C = ", C)
print("D = ", D)

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

A = ['a', 'b', 'c', 'd', 'e', 'f']
B = ['a', 'd', 'e', 'f']
C = ['a', 'b', 'c']
D = ['a', 'b', 'c', 'd', 'e']

 

5. Операция присваивания элемента списка по индексу L[i]. Пример

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

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

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

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

# вызов операции присваивания
t1 = A[-1] # t=9 - отрицательные индексы просматриваются справа налево
t2 = A[3] # t=4 - положительные индексы просматриваются слева направо
t3 = A[0] # t3=1

print("t1 = ",t1)
print("t2 = ",t2)
print("t3 = ",t3)

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

t1 = 9
t2 = 4
t3 = 1

 

6. Операция присваивания нескольких элементов списка с помощью среза L[i:j]

При работе со списками в Python есть возможность присваивать несколько элементов. Такое присваивание имеет название «присваивание среза». В результате создается новый список, который содержит несколько элементов, которые задаются диапазоном.

Пример использования операции присваивания

# Особенности операции присваивания среза
# Создать список A
A = [ 'abc', 'def', 'ghi', 23.5, 8.8, -11 ]

# Создать список B, который содержит 2,3,4 элементы списка A
B = A[1:4] # B = ['def', 'ghi', 23.5]

# Создать список C, что содержит два последних элемента списка A
n = len(A)
C = A[n-2:n] # C = [8.8, -11]

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

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

A = ['abc', 'def', 'ghi', 23.5, 8.8, -11]
B = ['def', 'ghi', 23.5]
C = [8.8, -11]

 

7. Операция изменения списка с помощью среза L[i:j]

С помощью среза можно изменить уже существующий список. Операция изменения списка с помощью среза выполняется в 2 етапа:

  1. Удаляется часть списка, которая размещается слева от оператора =.
  2. Происходит вставка в список новых объектов, размещенных справа от оператора =. Вставка осуществляется начиная с левого края, где находился предыдущий удаленный срез.

 

# Изменение списка с помощью среза
# Задан список
A = [0,0,0,0,0,0]

# Изменить список с помощью среза
B = list(A) # сделать копию списка A, B = [0,0,0,0,0,0]
B[1:]=[1,1,1] # B = [0, 1, 1, 1]

C = list(A)   # C = [0,0,0,0,0,0]
C[1:3]=[1,1,1] # C = [0,1,1,1,0,0,0]

D = list(A)   # D = [0,0,0,0,0,0]
D[:3]=[1,1,1] # D = [1,1,1,0,0,0]

E = list(A)
E[:5]=[1,1,1] # E = [1,1,1,0]

F = list(A)
F[1:10]=[1,1,1] #F = [0,1,1,1]

print("A       = ",A)
print("B[1:]   = ",B)
print("C[1:3]  = ",C)
print("D[:3]   = ",D)
print("E[:5]   = ",E)
print("F[1:10] = ",F)

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

A       =   [0, 0, 0, 0, 0, 0]
B[1:]   =   [0, 1, 1, 1]
C[1:3]  =   [0, 1, 1, 1, 0, 0, 0]
D[:3]   =   [1, 1, 1, 0, 0, 0]
E[:5]   =   [1, 1, 1, 0]
F[1:10] =   [0, 1, 1, 1]

 

 


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