Введение в программирование на языке Python. 9 Модуль. Практика. Операции со списками.

Факультативы
Python — это скриптовый язык программирования. Он универсален, поэтому подходит для решения разнообразных задач и многих платформ, начиная с iOS и Android и заканчивая серверными ОС. Преимущества Python. Это интерпретируемый язык — он не компилируется, то есть до запуска представляет из себя обычный текстовый файл. Программировать можно практически на всех платформах, язык хорошо спроектирован и логичен.
Шкурин Дмитрий Николаевич
Содержимое публикации

10 Модуль. Операции со списками

Генераторы

Для создания списка, заполненного одинаковыми элементами, можно использовать оператор повторения списка, например:

а = [0] * n

Для создания списков, заполненных по более сложным формулам, можно использовать генераторы — выражения, позволяющие заполнить список некоторой формулой. Общий вид генератора следующий:

[выражениеfor переменная in список]

Здесь переменная — идентификатор некоторой переменной, список — список значений, который принимает данная переменная (как правило, полученный при помощи функции range()), выражение — некоторое выражение, которым будут заполнены элементы списка, как правило, зависящее от использованной в генераторе переменной.

Вот несколько примеров использования генераторов.

Создать список, состоящий из n нулей можно и при помощи генератора:

a=[0for i inrange(n)]

Создать список, заполненный квадратами целых чисел, можно так:

a=[i ** 2for i inrange(n)]

Если нужно заполнить список квадратами чисел от 1 до n, то можно выражение следующим образом:

a=[(i + 1) ** 2for i inrange(n)]

Другим способом может быть изменение параметров функции range():

a=[i ** 2for i inrange(1, n + 1)]

Таким образом можно генерировать достаточно сложные выражения и заполнять элементы списка по определенным правилам.

Модуль random

Иногда возникает необходимость использования случайных чисел. Для этого можно использовать, например, функцию randint из модуля random. В начале вашей программы следует подключить этот модуль с помощью команды:

importrandom

Пример:

Смоделируем n бросков кубика, то есть сгенерируем список, заполненный случайными числами от 1 до 6 включительно:

a=[random.randint(1,6)for i inrange(n)]

Cчитывание данных

Рассмотрим еще одно применение списочных выражений — считывание данных. Пусть список состоит из строк, которые состоят из чисел. Сначала нужно ввести число элементов списка (это значение будет использовано в качестве аргумента функции range()), потом — заданное количество строк. Программа для их считывания будет выглядеть следующим образом:

a = [int(input())for i in range(int(input()))]

Если список чисел дан в одной строке через пробел, то можно использовать следующую конструкцию: a = list(map(int, input().split())). Используя генераторы, можно сделать то же самое с использованием следующей конструкции:

a=[int(elem)for elem ininput().split()]

В данном случае индексная переменная elem принимает значения, равные элементам входной строки, разбитой пробелами. После преобразования этих элементов функцией int получим список из целых чисел.

Задача 1.

Список степеней

Используя генератор, составьте список S, заполненный степенями числа X от 0 до N−1 и распечатайте его инструкцией print(S).

Входные данные

В двух строках входного файла заданы натуральные числа X и N, не превосходящие 200 по значению.

Выходные данные

Выведите список с помощью инструкции print(S).

Срезы

Для списков, как и для строк, определена операция взятия среза. А именно:

a[i : j] —срезиз ji элементовa[i], a[i + 1],..., a[j - 1].

a[i : j : k] —срезсшагом ka[i], a[i + k], a[i + 2 * k],....

Если значение k<0, то элементы будут идти в противоположном порядке.

Любое из чисел i или j может отсутствовать, что означает “начало списка” или “конец списка”.

Списки, в отличие от строк, являются изменяемыми объектами: можно отдельному элементу списка присвоить новое значение. Можно поменять и целиком срез. Рассмотрим примеры:

>>>a = [1, 2, 3, 4, 5, 6]

>>>a[2 : 4] = [7, 8, 9, 10]

>>>print(a)

[1,2,7,8,9,10,5,6]

>>>a[-2 : ]=[]

>>>print(a)

[1,2,7,8,9,10]

>>>a[1 : : 2]=[11,12,13]

>>>print(a)

[1, 11, 7, 12, 9, 13]

Если срезу с шагом k, отличным от 1, присвоить новое значение, то количество элементов в старом и новом срезе обязательно должно совпадать, в противном случае произойдёт ошибка ValueError.

Обратите внимание, что операция обращения к элементу по индексу отличается от взятия среза. a[i] — это элемент списка, а не срез!

>>>a=[1,11,7,12,9,13]

>>>a[2]=[14,15]

>>>print(a)

[1,11,[14,15],12,9,13]

Задача 2.

Переставить в обратном порядке

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

Входные данные

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

Выходные данные

Выведите ответ на задачу.

Задача 3.

Развернуть элементы с нечетными индексами

Вам дан список целых чисел. Разверните элементы с нечетными индексами.

Входные данные

Вводится список чисел. Все числа списка не превосходят по модулю 100 и находятся на одной строке.

Выходные данные

Выведите получившийся список.

Со списками можно легко делать много разных операций. Рассмотрим основные из них:

min(A)

Наименьший элемент списка. Элементы списка могут быть числами или строками, для строк сравнение элементов проводится в лексикографическом порядке.

max(A)

Наибольший элемент списка.

sum(A)

Сумма элементов списка. Элементы обязательно должны быть числами.

in A

Проверить, содержится ли элемент в списке. Возвращает True или False .

not in A

То же самое, что not(x in A).

A.index(x)

Индекс первого вхождения элемента x в список, при его отсутствии генерирует исключение ValueError.

A.count(x)

Количество вхождений элемента x в список.

A.append(x)

Добавить в конец списка A элемент x.

A.insert(i, x)

Вставить в список A элемент x на позицию с индексом i. Элементы списка A, которые до вставки имели индексы i и больше, сдвигаются вправо.

A.extend(B)

Добавить в конец списка A содержимое списка B.

A.pop()

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

A.pop(i)

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

A.remove(x)

Удаляет первое вхождение элемента x. Если элемента x нет в списке,то получаем ошибку во время выполнения.

Задача 4.

Удалить элемент

Дан список из чисел и индекс элемента в списке k. Удалите из списка элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k.

Программа получает на вход список, затем число k. Программа сдвигает все элементы, а после этого удаляет последний элемент списка при помощи метода pop().

Программа должна осуществлять сдвиг непосредственно в списке, а не делать это при выводе элементов. Также нельзя использовать дополнительный список.

Входные данные

Вводится список чисел. Все числа списка находятся на одной строке. В следующей строке вводится одно целое число. Все числа целые и не превосходят 100.

Выходные данные

Выведите полученный после удаления элемента список.

Задача 5.

Вставить элемент

Дан список целых чисел, число k и значение C. Необходимо вставить в список на позицию с индексом k элемент, равный C, сдвинув все элементы, имевшие индекс не менее k, вправо.

Поскольку при этом количество элементов в списке увеличивается, после считывания списка в его конец нужно будет добавить новый элемент, используя метод append().

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

Входные данные

Вводится список чисел. Все числа списка находятся на одной строке. В следующей строке вводятся два целых числа. Все числа не превосходят 100.

Выходные данные

Выведите ответ на задачу.

Задача 6.

Количество различных элементов — 2

Дан список. Посчитайте, сколько в нём различных элементов, не изменяя самого списка.

Входные данные

Вводится список чисел. Все числа списка находятся на одной строке. Все числа целые неотрицательные и не больше 1000.

Выходные данные

Выведите ответ на задачу.

Задача 7.

Уникальные элементы

Дан список. Выведите те его элементы, которые встречаются в списке только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке. В данной задаче запрещено пользоваться всеми операциями над списками (find, count, index и так далее).

Входные данные

Вводится список целых чисел. Все числа списка находятся на одной строке.

Выходные данные

Выведите ответ на задачу.

Задача 8.

Самое частое число

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

Если таких чисел несколько, выведите любое из них.

Входные данные

Вводится список чисел. Все числа списка целые, по модулю не превосходят 1000 и находятся на одной строке.

Выходные данные

Выведите ответ на задачу.

Задача 9.

Количество совпадающих пар

Дан список чисел. Посчитайте, сколько в нём пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу, образуют одну пару, которую необходимо посчитать.

Входные данные

Вводится список чисел. Все числа списка не превосходят 100 и находятся на одной строке.

Выходные данные

Выведите ответ на задачу.

Задача 10.

Переставить min и max

Дан список чисел. В списке все элементы различны. Поменяйте местами минимальный и максимальный элемент этого списка.

Входные данные

Вводится список целых чисел. Все числа списка не превосходят по модулю 231 и находятся на одной строке.

Выходные данные

Выведите ответ на задачу.

Комментировать
Свидетельство участника экспертной комиссии
Оставляйте комментарии к работам коллег и получите документ бесплатно!
Подробнее
Также Вас может заинтересовать
Информатика
Презентации по информатики для «Онлайн-конструктор пазлов «I’m a puzzle»»
Информатика
Презентации по информатики для «Связи в базах данных»
Информатика
Разное по информатики для «Основы работы в программе «Photoshop»»
Информатика
Конспект занятия по информатики для 5 класса «Технологическая карта урока "Компьютерная графика"»
Комментарии
Добавить
публикацию
После добавления публикации на сайт, в личном кабинете вы сможете скачать бесплатно свидетельство и справку о публикации в СМИ.
Cвидетельство о публикации сразу
Получите свидетельство бесплатно сразу после добавления публикации.
Подробнее
Свидетельство за распространение педагогического опыта
Опубликует не менее 15 материалов и скачайте бесплатно.
Подробнее
Рецензия на методическую разработку
Опубликуйте материал и скачайте рецензию бесплатно.
Подробнее
Свидетельство участника экспертной комиссии
Стать экспертом и скачать свидетельство бесплатно.
Подробнее
Помощь