ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 113
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство образования Российской Федерации
Негосударственное образовательное частное учреждение высшего образования «Московский финансово-промышленный университет «Синергия»
Кафедра Информационного менеджмента и информационно-коммуникационных технологий имени профессора В.В. Дика
Тема «Функции, модули и пакеты».
Лабораторный практикум №5
«Работа со списками. Операции над списками в Python»
По дисциплине «Программирование на языке Python»
Направление подготовки: | 09.03.02 Информационные системы и технологии |
Профиль подготовки: | Разработка, сопровождение и обеспечение безопасности информационных систем |
Квалификация выпускника: | Бакалавр |
Форма обучения: | очная |
Москва 2023
Лабораторный практикум №5
«Работа со списками. Операции над списками в Python»
Цель работы: сформировать навыки работы со списками на языке Python, в том числе навыки работы с одномерными массивами; научиться использовать генераторы списков при программировании различных практических задач
Задачи:
Овладеть навыками составления линейных алгоритмов на языке программирования Python с использованием списков;
Применять функции и методы списков при обработке последовательностей;
Знать операции и методы обработки списков.
Ход работы:
-
Ознакомиться (прочитать) теоретический материал. -
Изучить Требования к защите отчетной документации/ Защита результатов выполнения лабораторных работ -
Выполнение заданий лабораторной работы/составление отчета по лабораторной работе. -
Ответы на контрольные вопросы, выводы по проделанной работе. -
Защита отчета по лабораторному практикуму
Теоретический материал
tk.ulstu.ru/video.php#video
#13. Списки - операторы и функции работы с ними
#14. Срезы списков и сравнение списков
#15. Основные методы списков
#16. Вложенные списки, многомерные списки
-
#27. Генераторы списков (List comprehensions) -
#28. Вложенные генераторы списков
Списки служат для того, чтобы хранить объекты в определенном порядке, особенно если порядок или содержимое могут изменяться. В отличие от строк список можно изменить. Вы можете изменить список, добавить в него новые элементы, а также удалить или перезаписать существующие. Одно и то же значение может встречаться в списке несколько раз.
Списки — позиционно упорядоченные коллекции объектов произвольных типов данных, заключающихся в квадратные скобки [ ] и отделяющиеся друг от друга с помощью запятой, не имеющие фиксированного размера. В отличие от строк списки можно модифицировать на месте путем присваивания по индексу или вызовом некоторых списковых методов. Это позволяет использовать списки как довольно гибкий инструмент для представления произвольных коллекций, таких как: перечня продуктов в магазине, учащихся в школе и т. д.
К основным характеристикам списков можно отнести то, что они:
— являются упорядоченными коллекциями произвольных объектов;
— поддерживают доступ по смещению;
— имеют переменную длину, разнородны и допускают произвольно глубокое вложение;
— относятся к категории «изменяемая последовательность»;
— представляют собой массивы ссылок на объекты.
Создание списков на языке Python.
1. Получение списка через присваивание конкретных значений.
Так выглядит в коде Python пустой список:
s = [] # Пустой список
Примеры создания списков со значениями:
Списки можно складывать (конкатенировать) с помощью знака «+»:
Результат:
2. Создание списка при помощи функции
split().
Используя функцию split в Python можно получить из строки список.
stroka ="Привет, страна"
lst=stroka.split(",")
Результат:
3. Генераторы списков.
В Python создать список можно также при помощи генераторов.
Первый способ.
Сложение одинаковых списков заменяется умножением:
Список из 10 элементов, заполненный единицами
l = [1]*10
Второй способ.
List comprehension — это упрощенный подход к созданию списка, который задействует цикл for, а также инструкции if-else для определения того, что в итоге окажется в финальном списке.
У list comprehension есть три основных преимущества.
-
Простота. List comprehension позволяют избавиться от циклов for, а также делают код более понятным. -
Скорость. List comprehension быстрее for-циклов, которые он и заменяет. -
Принципы функционального программирования. Поскольку list comprehensions создают новый список, не меняя существующий, их можно отнести к функциональному программированию.
List comprehension записывается в квадратных скобках и задействует цикл for. В процессе создается новый список, куда добавляются все элементы оригинального. По мере добавления элементов их можно изменять.
Пример 1.
l= [i for i in range(10)]
В этом примере каждое значение диапазона присваивается переменной i. Каждое значение возвращается неизменным и добавляется в новый список. Это — та самая i перед циклом for.
Пример 2.
>>> nums = [1, 2, 3, 4, 5]
>>> squares = [n*n for n in nums]
>>> print(squares)
[1, 4, 9, 16, 25]
В этом примере два изменения по сравнению с прошлым кодом. Во-первых, в качестве источника используется уже существующий список. Во-вторых, list comprehension создает список, где каждое значение — это возведенное в квадрат значения оригинального списка.
Пример 3.
c = [c * 3 for c in 'list']
print (c) # ['lll', 'iii', 'sss', 'ttt']
Теперь добавим проверку с помощью if, чтобы не добавлять все значения.
>>> nums = [1, 2, 3, 4, 5]
>>> odd_squares = [n*n for n in nums if n%2 == 1]
>>> print(odd_squares)
[1, 9, 25]
Инструкция if идет после цикла — в данном случае порядок играет роль.
В последнем примере рассмотрим пример со вложенным циклом for.
>>> matrix = [[x for x in range(1, 4)] for y in range(1, 4)]
>>> print(matrix)
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
Может показаться, что здесь все стало чуть сложнее. Но достаточно разбить код на несколько строк, чтобы увидеть, что нет ничего особенного.
matrix = [
[x for x in range(1, 4)]
for y in range(1, 4)
]
print(matrix)
Последний пример. Создадим список дней рождения из списка словарей. Для этого используем знакомые тактики.
people = [{
"first_name": "Василий",
"last_name": "Марков",
"birthday": "9/25/1984"
}, {
"first_name": "Регина",
"last_name": "Павленко",
"birthday": "8/21/1995"
}]
birthdays = [
person[term]
for person in people
for term in person
if term == "birthday"
]
print(birthdays)
[‘9/25/1984’, ‘8/21/1995’]
В этом примере сперва перебираем people, присваивая каждый словарь person. После этого перебираем каждый идентификатор в словаре, присваивая ключи term. Если значение term равно birthday, то значение person[term] добавляет в list comprehension.
Примеры использования генераторов списка.
Пример 1.
Заполнить список квадратами чисел от 0 до 9, используя генератор списка.
Решение:
l = [i*i for i in range(10)]
Пример 2.
Заполнить список числами, где каждое последующее число больше на 2.
l = [(i+1)+i for i in range(10)]
print(l)
Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности.
random.randint(A, B) - случайное целое число N, A ≤ N ≤ B.
random.random() - случайное число от 0 до 1.
Случайные числа в списке:
10 чисел, сгенерированных случайным образом в диапазоне (10,80)
from random import randint
l = [randint(10,80) for x in range(10)]
10 чисел, сгенерированных случайным образом в диапазоне (0,1)
l = [random() for i in range(10)]
4. Ввод списка (массива) в языке Python.
Для ввода элементов списка используется цикл for и команда range ():
for i in range(N):
x[i] = int( input() )
Более простой вариант ввода списка:
x = [ int(input()) for i in range(N) ]
Функция int здесь используется для того, чтобы строка, введенная пользователем, преобразовывалась в целые числа.
5. Вывод списка (массива) в языке Python.
Вывод целого списка (массива):
print (L)
Поэлементный вывод списка (массива):
for i in range(N): print ( L[i], end = " " )
Методы списков.
Программа, демонстрирующая методы работы списков.
Пример программы на Python
Результат выполнения программы
Вариант 0
1. Из массива X длиной n, среди элементов которого есть положительные, отрицательные и равные нулю, сформировать новый массив Y, взяв в него только те элементы из X, которые больше по модулю заданного числа M. Вывести на экран число M, данный и полученные массивы.
Решение:
2. В массиве целых чисел все отрицательные элементы заменить на положительные. Вывести исходный массив и полученный.
Решение:
Задания на лабораторную работу №5 (по вариантам)
Написать программы в среде IDLE в соответствии с номером своего варианта.
Номер варианта | Задание №1 | Задание №2 | Задание №3 |
| Работа с одномерным массивом | Работа со списками | Генераторы списков (List comprehensions) |
1 | Дан одномерный массив, состоящий из N вещественных элементов. Ввести массив с клавиатуры. Найти и вывести минимальный по модулю элемент. Вывести массив на экран в обратном порядке. | Вводится список по четырем смартфонам в формате: название_1:цена_1 … название_4:цена_4 Здесь цена – это вещественное число. Преобразовать эту информацию в список вида: [['название_1', цена_1], ['название_2', цена_2], ...] Результат (список) вывести на экран. | Вводятся вещественные числа в строку через пробел. Необходимо на их основе сформировать список с помощью list comprehension (генератора списков) из чисел, противоположных введенным числам (в списке должны храниться именно числа, а не строки). Результат вывести на экран. |
2 | Дан массив целых чисел. Найти сумму элементов с четными номерами и произведение элементов с нечетными номерами. Вывести сумму и произведение. | Вводится список из четырех предметов в формате: название_1=вес_1 название_2=вес_2 название_3=вес_3 название_4=вес_4 Необходимо преобразовать введенные данные в двумерный список вида: [['название_1', вес_1], ['название_2', вес_2], ...] Вес – это целое число. Результат (список) вывести на экран. | Вводятся названия городов в строку через пробел. Необходимо сформировать список с помощью list comprehension, содержащий названия городов длиной более пяти символов. Результат вывести на экран. |
3 | Дан одномерный массив из 10 целых чисел. Найти максимальный элемент и сравнить с ним остальные элементы. Вывести количество меньших максимального и больших максимального элемента. | В одну строку вводится информация по студенту в формате (без кавычек): «Имя возраст группа список оценок» Список оценок – это набор целых чисел от 2 до 5. Их может быть разное количество. Преобразовать эту информацию в список в формате: ['Имя', возраст, 'группа', [3, 5, 4, 2, ...]] То есть, сформировать вложенный список из оценок. Результат (список) вывести на экран. | Вводится семизначное целое положительное число. С помощью list comprehension сформировать список, содержащий цифры этого числа (в списке должны быть записаны числа, а не строки). Результат вывести на экран в одну строку через пробел. |
4 | Дан одномерный массив, состоящий из N целочисленных элементов. Ввести массив с клавиатуры. Найти минимальный элемент. Вывести индекс минимального элемента на экран. | Вводится список городов в одну строчку через пробел. Необходимо преобразовать его в список и вывести названия через один. Например: Ввод: Москва Омск Уфа Тверь Вывод: Москва Уфа Также вывести общее число введенных городов. | Вводятся названия городов в строку через пробел. Необходимо сформировать список с помощью list comprehension, содержащий названия городов длиной менее шести символов. Результат вывести на экран. |
5 | Дан одномерный массив, состоящий из N целочисленных элементов. Ввести массив с клавиатуры. Найти максимальный элемент. Вывести массив на экран в обратном порядке. | Вводится список оценок студента в одну строчку через пробел. Необходимо преобразовать эту строку в список из чисел и подсчитать количество двоек в нем. Результат (число двоек) вывести на экран. Программу реализовать без использования операторов циклов for или while | Вводятся вещественные числа в строку через пробел. Необходимо на их основе сформировать список с помощью list comprehension (генератора списков) из модулей введенных чисел (в списке должны храниться именно числа, а не строки). Результат вывести на экран. |