Stepik: Списки и операции над ними
Список - упорядоченная коллекция данных.
a = ['Москва', 'Тверь', 'Вологда'] # это список, задается в квадратных скобках
В качестве примера приведем список оценок студентов
marks = [2, 3, 4, 3, 5, 2]
Для того, чтобы вычислить средний балл, нам нужно уметь обращаться к отдельному элементу списка:
sr = (marks[0] + marks[1] + marks[2] + marks[3] + marks[4] + marks[5]) / 6 print(round(sr, 2)) # Вывод: 3.17
Так же можно обращаться к элементам списка в обратном порядке, используя отрицательную нумерацию:
print(marks[-1]) # Вывод: 2 - то есть выведет последний элемент.
В отличии от строк, список относится к изменяемым типам данных. То есть мы можем изменить ранее хранимые значения:
marks = [2, 3, 4, 3, 5, 2] marks [0] = 3 print(marks) # Вывод: [3, 3, 4, 3, 5, 2]
Списку, состоящий целиком из чисел, можно присвоить значение любого типа данных:
marks = [3, 3, 4, 3, 5, 2] marks [1] = 'удовлетворительно' print(marks) # Вывод: [3, 'удовлетворительно', 4, 3, 5, 2]
Списки могут содержать самые различные типы данных:
lst = ['Москва', 1320, 5.8, True, 'Тверь', False] print(lst)
В том числе и другие списки. Элементами списка может быть любой объект языка Python:
lst2 = [1, 2.5, [-1, -2, -3], 4] print(lst2) # Вывод: [1, 2.5, [-1, -2, -3], 4]
Если нужно создать пустой список - делается это так:
a = [] # или b = list() #функция list возвращает соответствующий список print(b) # Вывод: []
Но если в списке b = list()
указать какой-либо список, то у нас получится на выходе новый список, совершенно незавимый. То есть с помощью list
можно создавать копии списков:
b = list([True, False]) print(b) # Вывод: [True, False]
Если через функцию лист передать строку:
a = list('python') print(a) # Вывод: ['p', 'y', 't', 'h', 'o', 'n'] b = ['python', 'best'] print(b) # Вывод: ['python', 'best']
Функции списков
marks = [3, 'удовлетворительно', 4, 3, 5, 2] print(len(marks)) # Вывод: 6 - 6 элементов в списке
min()
и max()
- позволяют определять минимальное и максимальное значение списков
t = [23.5, 25.6, 27.3, 26.0, 30.4, 29.5] #температура по дням print(min(t), max(t)) # Вывод: 23.5 30.4
sum()
- вычисляет сумму элементов списка
t = [23.5, 25.6, 27.3, 26.0, 30.4, 29.5] print(sum(t)) # Вывод: 162.3 # чтобы посчитать среднюю сумму: print(sum(t) / len(t)) # Вывод: 27.05
sorted()
- возвращает отсортированный список на основании имеющегося списка. Главный момент - функция sorted() возвращает новый список
t = [23.5, 25.6, 27.3, 26.0, 30.4, 29.5] t_sort = sorted(t) # сортировка по возрастанию print(t_sort) # Вывод: [23.5, 25.6, 26.0, 27.3, 29.5, 30.4] t_sort = sorted(t, reverse = True) # сортировка по убыванию print(t_sort) # Вывод: [30.4, 29.5, 27.3, 26.0, 25.6, 23.5]
Функции max()
, min()
, sorted()
работают не только с числовыми значениями, но и со строками
s = list('python') print(s) # Вывод: ['p', 'y', 't', 'h', 'o', 'n'] print(max(s)) # Вывод: y print(min(s)) # Вывод: h print(sorted(s)) # Вывод: ['h', 'n', 'o', 'p', 't', 'y']
Оператор +
- объединение списков в один. Объединять можно только списки.
a = [1, 2, 3] b = [4, 5] print(a + b) # Вывод: [1, 2, 3, 4, 5] print([1, 2, 3] + [4, 5]) # Вывод: [1, 2, 3, 4, 5] print([4, 5] + [1, 2, 3]) # Вывод: [4, 5, 1, 2, 3] print([1, 2, 3] + [True]) # Вывод: [1, 2, 3, True]
Оператор *
- позволяет дублировать элементы списка
s = ['Я', 'люблю', 'Python'] print(s * 3) # Вывод: ['Я', 'люблю', 'Python', 'Я', 'люблю', 'Python', 'Я', 'люблю', 'Python'] print(['Я', 'люблю', 'Python'] * 3) # Вывод: ['Я', 'люблю', 'Python', 'Я', 'люблю', 'Python', 'Я', 'люблю', 'Python']
Так же можно комбинировать эти операторы:
print(['Я'] + ['люблю'] * 3 + ['Python']) # Вывод: ['Я', 'люблю', 'люблю', 'люблю', 'Python']
Оператор in
- проверяет вхождение элемента в список
lst = ['Москва', 1320, 5.8, True, 'Тверь', False] print(1320 in lst) # Вывод: True print(132 in lst) # Вывод: False print([1, 2] in lst) # Вывод: False print('Москва' in lst) # Вывод: True
Оператор del
- удаляет элемент из списка по его индексу
lst = ['Москва', 1320, 5.8, True, 'Тверь', False] del lst[2] print(lst) # Вывод: ['Москва', 1320, True, 'Тверь', False]