1. Списки. Основы

☰ Теория

Списки (массивы)

Списки в Python представляют собой упорядоченные последовательности значений.
Создать простой список можно простым перечислением элементов. Например, вот так можно создать список первых пяти простых чисел:
primes = [2, 3, 5, 7, 11]
или список планет:
planets = ['Меркурий', 'Венера', 'Земля', 'Марс', 'Юпитер', 'Сатурн', 'Уран', 'Нептун']



Индексация 

Каждый элемент списка имеет свой уникальный номер, который называется индексом. Индексация элементов списка начинается с нуля. В Python используется нулевая индексация, поэтому первый элемент имеет индекс 0, второй - индекс 1 и т.д.

Доступ к отдельным элементам списка можно получить с помощью квадратных скобок.

print(planets[0])    # Меркурий
print(planets[1])    # Венера

Кроме этого Python, к элементам в конце списка можно обращаться с помощью отрицательных чисел, начиная с -1. Последний элемент имеет индекс -1, предпоследний -2 и т.д.

print(planets[-1])    # Нептуп
print(planets[-2])    # Уран

 

Срезы

Срезы (slices) в Python - позволяют выбирать несколько элементов из последовательности одновременно. 

Синтаксис срезов выглядит следующим образом: [начало:конец:шаг]. Работают срезы на списках, аналогично срезам на строках. При выполнении среза создается новый список.

print(planets[0:3])    # ['Меркурий', 'Венера', 'Земля']

 

Начальный и конечный индексы необязательны. Если опустить начальный индекс, он будет считаться равным 0. Таким образом, можно переписать выражение выше следующим образом:

print(planets[:3])    # ['Меркурий', 'Венера', 'Земля']

 

Если опустить конечный индекс, он будет считаться равным длине списка.

print(planets[3:])   # ['Марс', 'Юпитер', 'Сатурн', 'Уран', 'Нептун']

 

Изменение элементов списка

Списки изменяемы, то есть их можно изменять "на месте".

Один из способов изменить список - присвоить значение по определенному индексу или присвоить результат среза.

Например, допустим, мы хотим переименовать Марс:

planets[3] = 'Малакандра'
print(planets[3])   # Малакандра

 

Можно изменять элементы среза

planets[:3] = ['Мер', 'Вен', 'Зем']
print(planets)  # ['Мер', 'Вен', 'Зем', 'Марс', 'Юпитер', 'Сатурн', 'Уран', 'Нептун']

 

Функции работы со списками

В Python есть несколько полезных функций для работы со списками.

len(list) возвращает длину списка:

print(len(planets))    # 8

 

sorted() создает из исходного списка новый список с отсортированными значениями

planets = ['Меркурий', 'Венера', 'Земля', 'Марс', 'Юпитер', 'Сатурн', 'Уран', 'Нептун']
print(sorted(planets))    # ['Венера', 'Земля', 'Марс', 'Меркурий', 'Нептун', 'Сатурн', 'Уран', 'Юпитер']

 

sort() сортирует значения списка «на месте» (не создавая новый список). Обратите внимание на разницу в вызове между двумя способами сортировки!

planets.sort() 
print(planets)    # ['Венера', 'Земля', 'Марс', 'Меркурий', 'Нептун', 'Сатурн', 'Уран', 'Юпитер']

 

list.append(элемент) изменяет список, добавляя элемент в конец:

planets.append('Плутон')
print(planets)    # ['Венера', 'Земля', 'Марс', 'Меркурий', 'Нептун', 'Сатурн', 'Уран', 'Юпитер', 'Плутон']

 

list.pop() удаляет и возвращает последний элемент списка:

print(planets.pop())   # 'Плутон'
print(planets)    # ['Венера', 'Земля', 'Марс', 'Меркурий', 'Нептун', 'Сатурн', 'Уран', 'Юпитер']

 

Поиск

Какой по счету идет планета Земля? Мы можем получить индекс элемента используя метод list.index().

planets = ['Меркурий', 'Венера', 'Земля', 'Марс', 'Юпитер', 'Сатурн', 'Уран', 'Нептун']
print(planets.index('Земля'))  # 2

Если такого элемента в списке нет, то мы получим ошибку.

Можно использовать оператор in, чтобы определить, содержит ли список определенное значение:

print('Земля' in planets)    # True



Другие полезные функции

sum(list) возвращает сумму элементов списка (если элементы списка числа)
min(list) минимальное значение среди элементов списка
max(list) максимальное значение среди элементов списка
list.count(значение) определяет сколько раз встречается указанное значение в списке
list(последовательность) преобразует последовательность в массив (каждый элемент последовательности (например, символы строки) будет сохранен как отдельный элемент списка)


Как сохранить входные данные в список (массив)

1) Если входные данные записаны в одной строке, то их можно записать в массив следующим образом:
 my_list = list(map(int, input().split()))
2) Если входные данные (например, числа) идут по одному значению в одной строке, и вам необходимо сохранить их в массив, то сделать это можно, используя списочное выражение:
n = int(input())   # количество чисел
a = [int(input()) for i in range(n)]


Вывод элементов массива на экран

Вывести все элементы списка на экран можно функцией print(). Так мы делали во всех примерах выше. В этом случае, все элементы будут заключены в квадратные скобки и перечислены через запятую.
Если необходимо вывести элементы без скобок и через другой разделитель (например, пробел), то можно использовать оператор распаковки (*)
planets = ['Меркурий', 'Венера', 'Земля', 'Марс', 'Юпитер', 'Сатурн', 'Уран', 'Нептун']
print(planets)  #  Меркурий Венера Земля Марс Юпитер Сатурн Уран Нептун
Можно даже вывести все элементы в столбик. Для этого, параметру sep необходимо присвоить символ перехода на новую строке (можно присвоить и любой другой символ, который будет разделителем между элементами списка)
planets = ['Меркурий', 'Венера', 'Земля', 'Марс', 'Юпитер', 'Сатурн', 'Уран', 'Нептун']
print(planets, sep='\n')


Перебор элементов массива

Перебор элементов массива используется для прохождения по всем элементам и выполнения с каждым из них однотипных действий. Перебор элементов можно выполнять как по самим элементам, так и с использованием индексов.
Перебор по самим элементам используется, когда необходимо только получить значение элемента. Например, вывести все планеты на экран, написав перед каждой слово "Планета" можно следующим образом:
for elem in planets:
    print('Планета', elem)
Перебор по индексам используется, если мы хотим изменить элемент или узнать индексе определенного элемента. Например, вывести все планеты с указанием их порядкового номера можно таким образом:
for i in range(len(planets)):
    print('Планета номер', i+1, '-', planets[i])

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

Формат входных данных
Выведите имена гостей в алфавитном порядке. Имя каждого гостя должно идти с новой строки. В последней строке выведите имя гостя, который пришел первым и, через один пробел, имя гостя, которым пришел последним.
 
Примеры
Входные данныеВыходные данные
1 7
Adela
Fleda
Owen
May
Mona
Gilbert
Ford
Adela
Fleda
Ford
Gilbert
May
Mona
Owen
Adela Ford

Напишите программу
Auto
       

time 250 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
Python20
Комментарий учителя