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

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

8 Модуль. Списки.

Cписки (в большинстве же языков программирования используется другой термин – "массив") — это такая структура данных, которая позволяет хранить в себе несколько однотипных значений, таких как числа или строки. Например, если мы хотим проверить число на простоту, а потом построить его разложение на простые множители, нам удобно создать список простых чисел. Тогда мы сможем проверять делимость числа на все ранее построенные элементы списка.

Список в Python представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Тогда список, состоящий из n элементов, будет заканчиваться элементом с индексом n−1

Пример:

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

p = [2, 3, 5, 7, 11, 13]

В списке p —  6 элементов, а именно: 

p[0] == 2, p[1] == 3, p[2] == 5, p[3] == 7, p[4] == 11, p[5] == 13.

Также как и символы строки, элементы списка в Python можно индексировать отрицательными числами с конца, например, p[-1] == 13. Длину списка, то есть количество элементов в нём, можно узнать при помощи функции len(), например, len(p) == 6.

Если мы попробуем обраться к элементу списка по некорректному индексу, например, обратимся к элементу p[6], то произойдёт ошибка IndexError: list index out of range.

Пример:

Пусть теперь мы хотим перебрать все элементы списка, при этом выводя их на экран, а потом возводя в квадрат. Организуем цикл следующим образом:

for i in range(len(p)):

print(p[i])

p[i] = p[i] ** 2

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

Пример:

Пусть нам необходимо хранить базу данных учащихся некоторой школы, содержащую данные об учащихся и их оценках для ведения электронного дневника. Заведем списки для хранения имен учащихся names и для хранения их оценок scores, причём элементы с одинаковыми индексами будут соответствовать один и тем же ученикам. Выведем данные, пронумеровав записи, с помощью следующей программы:

names = ['Иванов', 'Петров', 'Королев']

scores=[5,4,5]

for i inrange(len(scores)):

print(i+1,'.', sep ='', end =' ')

print(names[i], scores[i])

На выходе получим:

1. Иванов 5

2. Петров 4

3. Королев 5

Операции со списками

Для списков целиком определены следующие операции: конкатенация списков (добавление одного списка в конец другого) и повторение списков (умножение списка на число). Например:

a = [1, 2, 3]

b = [4, 5]

c = a + b

d = a * 10

В результате приведенных выше операций список c будет равен [1, 2, 3, 4, 5], а список d будет состоять из 30 элементов, из элементов 1, 2, 3, повторенных 10 раз.

Создание списков

Операция повторения списка позволяет конструировать большие списки. Например, списки с 1000 элементов, заполненных нулями.

a = [0] * 1000

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

a=[]

for i inrange(1000):

a.append(0)

Ноль можно заменить любым другим выражением.

a=[]

for i inrange(1000):

a.append(i)

В полученном списке будет 1000 элементов — от 0 до 999.

Список одинаковых чисел

Вам дано число N и число X. Выведите число X ровно N раз в формате [X, X, X,... ,X]. Используйте функцию print() для вывода списка.

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

В двух строках входных данных заданы натуральные числа N(N≤1000) и X(X≤109).

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

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

Список квадратов

Дано число N. Выведите N квадратов чисел от 1 до N (включительно) в формате [1, 4, 9, 16,…, N**2]. Используйте функцию print() для вывода списка.

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

В одной строчке дано натуральное число N≤200.

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

Список квадратов в указанном формате.

Метод split

Элементы списка, разделённые пробелами, могут при вводе находиться в одной строке. В этом случае строку можно считать функцией input(). После этого можно использовать метод строки split, возвращающий список строк, разрезав исходную строку на части по пробелам.

Пример:

a = input().split()

Если при запуске этой программы ввести строку '2 3 5 7 11', то список a будет равен ['2', '3', '5', '7', '11']. Обратите внимание, что список будет состоять из строк, а не из чисел! Если хочется получить список именно из чисел, то можно элементы списка по одному преобразовать в числа:

for i inrange(len(a)):

a[i] = int(a[i])

В результате получим список, состоящий из чисел: [2, 3, 5, 7, 11]

Используя функции языка map() и list() то же самое можно сделать в одну строку:

a=list(map(int,input().split()))

Здесь манипулятор map() применяет функцию int() сразу ко всем элементам, полученным после разделения строки, и организует из них список list. Если нужно считать список действительных чисел, то в данной записи необходимо заменить int() на float().

Подобным способом можно считать и несколько отдельных переменных из одной строки. В этом случае распаковка по переменным считанных данных произойдет автоматически:

n, k =map(int,input().split())

Метод join

Научимся выводить элементы списка в одной строке через пробел при помощи однострочной команды. Для этого используется метод join. У этого метода один параметр — список строк. В результате получается строка, которая является соединением элементов списка (которые были переданы в качестве параметра). При этом между элементами списка вставляется разделитель, равный той строке, к которой применяется метод. Например,программа

a=["red","green","blue"]

print(" ".join(a))

print("***".join(a))

print("".join(a))

выведетстроки

 "red green blue""red***green***blue" и "redgreenblue".

Следующая программа выведет считанные слова в столбец по одному в каждой строке. Здесь символ \n обзначает переход на новую строчку:

print("\n".join(input().split()))

Если же список состоит из чисел, то придется использовать функцию map(). То есть вывести элементы списка чисел, разделяя их пробелами, можно, предварительно преобразовав их в строки следующим образом:

print(" ".join(map(str, a)))

Чётные элементы

Выведите все чётные элементы списка.

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

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

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

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

Чётные индексы

Выведите все элементы списка с чётными индексами (то есть A[0],A[2],A[4],...).

Программа должна быть эффективной и не выполнять лишних действий!

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

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

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

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

Задача

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

1-й способ решения

key = int(input())

a=list(map(int,input().split()))

idx= -1

for i inrange(len(a)):

if a[i]== key:

idx= i

print(idx)

break

if idx == -1:

print("нет")

2-йспособрешения

key=int(input())

a=list(map(int,input().split()))

found=False

for i inrange(len(a)):

if a[i]== key:

print(i)

found=True

break

ifnot found:

print("нет")

3-йспособрешения

key=int(input())

a=list(map(int,input().split()))

for i inrange(len(a)):

if a[i]== key:

print(i)

break

else:

print("нет")

4-йспособрешения

key=int(input())

a=list(map(int,input().split()))

i=0

while i <len(a)and a[i]!= key:

i +=1

if i <len(a):

print(i)

else:

print("нет")

Больше своих соседей

Дан список чисел. Определите, сколько в этом списке элементов, которые больше двух своих соседей, и выведите количество таких элементов.

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

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

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

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

Соседи одного знака

Дан список чисел. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет - не выводите ничего. Если таких пар соседей несколько — выведите первую пару.

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

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

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

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

Наименьший положительный

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

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

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

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

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

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

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

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

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

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

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

Ближайшее число

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

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

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

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

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

Вывести значение элемента массива, ближайшего к x. Если таких чисел несколько, выведите любое из них.

Шеренга

Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.

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

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

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

Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.

Циклический сдвиг вправо

Циклически сдвиньте элементы списка вправо (A[0] переходит на место A[1]A[1] — на место A[2],…,A[2],…, последний элемент переходит на место A[0]).

Используйте минимально возможное количество операций присваивания. Не используйте кортежные присваивания.

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

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

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

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

Два ближайших числа

Дан список целых чисел, содержащий как минимум два элемента. Найдите в нём два ближайших элемента (то есть два элемента с минимальной абсолютной разностью). Изменять список при этом нельзя.

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

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

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

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

Медиана

В списке нечётное число элементов, при этом все элементы различны. Найдите медиану списка: элемент, который стоял бы ровно посередине списка, если список отсортировать.

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

Программа должна вывести единственное число — значение медианного элемента в списке.

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

Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что N≤ 1000 и N – нечётное число.

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

Программа должна вывести одно число – медиану массива.

Комментировать
Свидетельство участника экспертной комиссии
Оставляйте комментарии к работам коллег и получите документ бесплатно!
Подробнее
Также Вас может заинтересовать
Информатика
Презентации по информатики для 8 класса «Презентация на тему: "Умный дом"»
Информатика
Разное по информатики для дошкольников ««Современные дети и гаджеты»»
Информатика
Информатика
Комментарии
Добавить
публикацию
После добавления публикации на сайт, в личном кабинете вы сможете скачать бесплатно свидетельство и справку о публикации в СМИ.
Cвидетельство о публикации сразу
Получите свидетельство бесплатно сразу после добавления публикации.
Подробнее
Свидетельство за распространение педагогического опыта
Опубликует не менее 15 материалов и скачайте бесплатно.
Подробнее
Рецензия на методическую разработку
Опубликуйте материал и скачайте рецензию бесплатно.
Подробнее
Свидетельство участника экспертной комиссии
Стать экспертом и скачать свидетельство бесплатно.
Подробнее
Помощь