Список (List)

Список в Python используется для хранения последовательности различных типов данных. Списки в Python являются мутабельными типами, то есть мы можем изменять их элементы после их создания. Однако в Python существует шесть типов данных, способных хранить последовательности, но наиболее распространенным и надежным типом является список (List).

Список можно определить как коллекцию значений или элементов различных типов. Элементы в списке разделяются запятой (,) и заключаются в квадратные скобки [].

Список можно определить следующим образом

L1 = ["John", 102, "USA"]    
L2 = [1, 2, 3, 4, 5, 6]   

Если попытаться вывести тип L1, L2 и L3 с помощью функции type(), то получится список.

print(type(L1))  
print(type(L2))  

Вывод:

<class 'list'>
<class 'list'>

Особенности списков (List) в Python

Список имеет следующие характеристики:

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

Проверим первое утверждение о том, что списки являются упорядоченными.

a = [1,2,"Peter",4.50,"Ricky",5,6]  
b = [1,2,5,"Peter",4.50,"Ricky",6]  
a ==b  

Вывод:

False

Оба списка состоят из одинаковых элементов, но во втором списке изменена позиция индекса 5-го элемента, что нарушает порядок списков. При сравнении обоих списков возвращается false.

Списки сохраняют порядок элементов на протяжении всего жизненного цикла. Именно поэтому они являются упорядоченной коллекцией объектов.

a = [1, 2,"Peter", 4.50,"Ricky",5, 6]  
b = [1, 2,"Peter", 4.50,"Ricky",5, 6]  
a == b  

Вывод:

True

Давайте рассмотрим более подробный пример со списком.

emp = ["John", 102, "USA"]     
Dep1 = ["CS",10]  
Dep2 = ["IT",11]    
HOD_CS = [10,"Mr. Holding"]    
HOD_IT = [11, "Mr. Bewon"]    
print("printing employee data...")    
print("Name : %s, ID: %d, Country: %s"%(emp[0],emp[1],emp[2]))    
print("printing departments...")   
print("Department 1:\nName: %s, ID: %d\nDepartment 2:\nName: %s, ID: %s"%(Dep1[0],Dep2[1],Dep2[0],Dep2[1]))    
print("HOD Details ....")    
print("CS HOD Name: %s, Id: %d"%(HOD_CS[1],HOD_CS[0]))    
print("IT HOD Name: %s, Id: %d"%(HOD_IT[1],HOD_IT[0]))    
print(type(emp),type(Dep1),type(Dep2),type(HOD_CS),type(HOD_IT))  

Вывод:

printing employee data...
Name : John, ID: 102, Country: USA
printing departments...
Department 1:
Name: CS, ID: 11
Department 2:
Name: IT, ID: 11
HOD Details ....
CS HOD Name: Mr. Holding, Id: 10
IT HOD Name: Mr. Bewon, Id: 11
<class 'list'> <class 'list'> <class 'list'> <class 'list'> <class 'list'>

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

Индексирование и разбивка списков

Индексация обрабатывается так же, как и в случае со строками. Доступ к элементам списка осуществляется с помощью оператора slice [].

Индекс начинается с 0 и идет до длины - 1. Первый элемент списка хранится по 0-му индексу, второй элемент списка хранится по 1-му индексу и так далее.

Индексирование и разбивка списков в python

Мы можем получить подсписок списка, используя следующий синтаксис.

list_varible(start:stop:step)  
  • start обозначает начальную индексную позицию списка.
  • stop обозначает последнюю индексную позицию списка.
  • step используется для пропуска n-го элемента в пределах start:stop.

Рассмотрим следующий пример:

list = [1,2,3,4,5,6,7]  
print(list[0])  
print(list[1])  
print(list[2])  
print(list[3])  
# Slicing the elements  
print(list[0:6])  
# By default the index value is 0 so its starts from the 0th element and go for index -1.  
print(list[:])  
print(list[2:5])  
print(list[1:6:2])  

Вывод:

1
2
3
4
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[3, 4, 5]
[2, 4, 6]

В отличие от других языков, Python предоставляет возможность использовать и отрицательную индексацию. Отрицательные индексы отсчитываются справа. Последний (самый правый) элемент списка имеет индекс -1; соседний с ним левый элемент находится под индексом -2 и так далее, пока не встретятся самые левые элементы.

Отрицательная индексация списков в Python

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

list = [1,2,3,4,5]  
print(list[-1])  
print(list[-3:])  
print(list[:-1])  
print(list[-3:-1])  

Вывод:

5
[3, 4, 5]
[1, 2, 3, 4]
[3, 4]

Как мы обсуждали выше, мы можем получить элемент, используя отрицательную индексацию. В приведенном выше коде первый оператор print вернул самый правый элемент списка. Второй оператор печати вернул вложенный список и так далее.

Обновление значений списка

Списки являются наиболее универсальными структурами данных в Python, поскольку они являются изменяемыми, и их значения можно обновлять с помощью оператора slice и оператора присваивания.

Python также предоставляет методы append() и insert(), которые можно использовать для добавления значений в список.

Рассмотрим следующий пример для обновления значений внутри списка.

list = [1, 2, 3, 4, 5, 6]     
print(list)     
# It will assign value to the value to the second index   
list[2] = 10   
print(list)    
# Adding multiple-element   
list[1:3] = [89, 78]     
print(list)   
# It will add value at the end of the list  
list[-1] = 25  
print(list)  

Вывод:

[1, 2, 3, 4, 5, 6]
[1, 2, 10, 4, 5, 6]
[1, 89, 78, 4, 5, 6]
[1, 89, 78, 4, 5, 25]

Элементы списка также можно удалять с помощью ключевого слова del. Python также предоставляет нам метод remove(), если мы не знаем, какой элемент должен быть удален из списка.

Рассмотрим следующий пример удаления элементов списка.

list = [1, 2, 3, 4, 5, 6]     
print(list)     
# It will assign value to the value to second index   
list[2] = 10   
print(list)    
# Adding multiple element   
list[1:3] = [89, 78]     
print(list)   
# It will add value at the end of the list  
list[-1] = 25  
print(list)  

Вывод:

[1, 2, 3, 4, 5, 6]
[1, 2, 10, 4, 5, 6]
[1, 89, 78, 4, 5, 6]
[1, 89, 78, 4, 5, 25]

Операции над списками в Python

Операторы конкатенации (+) и повторения (*) работают так же, как и со строками.

Давайте посмотрим, как список (List) реагирует на различные операторы.

Consider a Lists l1 = [1, 2, 3, 4], and l2 = [5, 6, 7, 8] to perform operation.  
Оператор/Метод Описание Пример
* Оператор повторения позволяет повторять элементы списка несколько раз. L1*2 = [1, 2, 3, 4, 1, 2, 3, 4]
+ Конкатенирует список, указанный по обе стороны от оператора. l1+l2 = [1, 2, 3, 4, 5, 6, 7, 8]
in Возвращает true, если определенный элемент существует в определенном списке, иначе false. print(2 in l1) prints True.
for in Цикл for используется для итерации по элементам списка. for i in l1: print(i) Output 1 2 3 4

Итерирование списка

Список можно итерировать с помощью цикла for - in. Простой список, содержащий четыре строки, можно итерировать следующим образом.

list = ["John", "David", "James", "Jonathan"]    
for i in list:   
    # The i variable will iterate over the elements of the List and contains each element in each iteration.     
    print(i)  

Вывод:

John
David
James
Jonathan

Добавление элементов в список Python

Python предоставляет функцию append(), которая используется для добавления элемента в список. Однако функция append() может добавлять значение только в конец списка.

Рассмотрим следующий пример, в котором мы принимаем элементы списка от пользователя и печатаем список на консоли.

#Declaring the empty list  
l =[]  
#Number of elements will be entered by the user    
n = int(input("Enter the number of elements in the list:"))  
# for loop to take the input  
for i in range(0,n):     
    # The input is taken from the user and added to the list as the item  
    l.append(input("Enter the item:"))     
print("printing the list items..")   
# traversal loop to print the list items    
for i in l:   
    print(i, end = "  ")     

Вывод:

Enter the number of elements in the list:5
Enter the item:25
Enter the item:46
Enter the item:12
Enter the item:75
Enter the item:42
printing the list items
25  46  12  75  42  

Удаление элементов из списка в Python

Python предоставляет функцию remove(), которая используется для удаления элемента из списка. Рассмотрим следующий пример, чтобы понять эту концепцию.

list = [0,1,2,3,4]     
print("printing original list: ");    
for i in list:    
    print(i,end=" ")    
list.remove(2)    
print("\nprinting the list after the removal of first element...")    
for i in list:    
    print(i,end=" ")  

Вывод:

printing original list: 
0 1 2 3 4 
printing the list after the removal of first element...
0 1 3 4 

Встроенные функции списков Python

Python предоставляет следующие встроенные функции, которые можно использовать со списками.

Функция Описание
cmp(list1, list2) Сравнивает элементы обоих списков.
len(list) Используется для вычисления длины списка.
max(list) Возвращает максимальный элемент списка.
min(list) Возвращает минимальный элемент списка.
list(seq) Он преобразует любую последовательность в список.

Давайте рассмотрим несколько примеров со списками.

Пример: 1 - Напишите программу для удаления дублирующегося элемента списка.

list1 = [1,2,2,3,55,98,65,65,13,29]  
# Declare an empty list that will store unique values  
list2 = []  
for i in list1:  
    if i not in list2:  
        list2.append(i)  
print(list2)  

Вывод:

[1, 2, 3, 55, 98, 65, 13, 29]

Пример:2 - Напишите программу для нахождения суммы элементов в списке.

list1 = [3,4,5,9,10,12,24]  
sum = 0  
for i in list1:  
    sum = sum+i      
print("The sum is:",sum)  

Вывод:

The sum is: 67

Пример: 3 - Напишите программу для нахождения списков, состоящих хотя бы из одного общего элемента.

list1 = [1,2,3,4,5,6]  
list2 = [7,8,9,2,10]  
for x in list1:  
    for y in list2:  
        if x == y:  
            print("The common element is:",x)  

Вывод:

The common element is: 2

строки (string)

кортежи (tuple)