Уроки технологии
Технология Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Списки

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

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

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

Сценарий: работа с приложением о планетах

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

Общие сведения о списках

Python имеет множество встроенных типов, таких как строки и целые числа. В Python есть тип для хранения коллекции значений — список.

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

Список создается путем присвоения переменной последовательности значений. Каждое значение отделяется запятой и заключено в квадратные скобки ([]). В следующем примере список всех планет хранится в переменной planets:

planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]

Доступ к элементам списка по индексу

Вы можете получить доступ к любому элементу в списке, поместив индекс в квадратные скобки [] после имени переменной списка. Индексы начинаются с 0, поэтому в следующем коде planets[0] является первым элементом в списке planets:

print("The first planet is", planets[0])
print("The second planet is", planets[1])
print("The third planet is", planets[2])

# Output
# The first planet is Mercury
# The second planet is Venus
# The third planet is Earth

Можно также изменять значения в списке с помощью индекса. Это можно сделать, назначив новое значение, точно так же, как вы присваиваете значение переменной. Например, можно изменить название “Марс” в списке, чтобы использовать его псевдоним:

planets[3] = "Red Planet"
print("Mars is also known as", planets[3])

# Output
# Mars is also known as Red Planet

Определение длины списка

Чтобы получить длину списка, используйте встроенную функцию len(). Следующий код создает новую переменную number_of_planets. Код присваивает этой переменной число элементов в списке planets (8).

number_of_planets = len(planets)
print("There are", number_of_planets, "planets in the solar system.")

# Output:
# There are 8 planets in the solar system

Добавление значений в списки

Списки в Python являются динамическими, то есть вы можете добавлять или удалять элементы после создания списка. Чтобы добавить элемент в список, используйте метод .append(value).

Например, следующий код добавляет строку “Pluto” в конец списка planets:

planets.append("Pluto")
number_of_planets = len(planets)
print("There are actually", number_of_planets, "planets in the solar system.")

# Output:
# There are actually 9 planets in the solar system.

Удаление значения из списка

Вы можете удалить последний элемент в списке, вызвав метод .pop() в переменной списка:

planets.pop()  # Goodbye, Pluto
number_of_planets = len(planets)
print("No, there are definitely", number_of_planets, "planets in the solar system.")

Использование отрицательных индексов

Индексы начинаются с нуля и возрастают. Отрицательные индексы начинаются с конца списка и работают в обратном направлении.

В следующем примере индекс -1 возвращает последний элемент в списке. Индекс -2 возвращает второе значение с конца.

print("The last planet is", planets[-1])
print("The penultimate planet is", planets[-2])

# Output
# The last planet is Neptune
# The penultimate planet is Uranus

Поиск значения в списке

Чтобы определить, где хранится значение в списке, используйте метод списка index. Этот метод ищет значение и возвращает индекс этого элемента в списке. Если совпадений не найдено, возвращается значение -1.

В следующем примере показано использование “Jupiter” в качестве значения индекса:

jupiter_index = planets.index("Jupiter")
print("Jupiter is the", jupiter_index + 1, "planet from the sun")

# Output
# Jupiter is the 5 planet from the sun

Упражнение 1

  1. Добавить все планеты солнечной системы в список
  2. Отобразите количество планет
  3. Добавьте Плутон в список и выведите последний элемент списка
# 1
planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]

print(planets)
# 2
print("There are", len(planets), "planets")

# 3
planets.append("Pluto")

print("Actually, there are", len(planets), "planets")

print(planets[-1], "is the last planet")

Срез списка

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

Список планет содержит восемь элементов. Земля стоить третьей в списке. Чтобы выбрать планеты до Земли, используйте срез с 0 до 2:

planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
planets_before_earth = planets[0:2]
print(planets_before_earth)

# Output: ['Mercury', 'Venus']

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

planets_after_earth = planets[3:]
print(planets_after_earth)

# Output
# ['Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']

Важно!

Срез создает новый список. Текущий список не изменяется.

Объединение списков

Чтобы объединить два списка, используйте оператор (+) с двумя списками, чтобы получить новый список.

amalthea_group = ["Metis", "Adrastea", "Amalthea", "Thebe"]
galilean_moons = ["Io", "Europa", "Ganymede", "Callisto"]

regular_satellite_moons = amalthea_group + galilean_moons
print("The regular satellite moons of Jupiter are", regular_satellite_moons)

# Output
# The regular satellite moons of Jupiter are ['Metis', 'Adrastea', 'Amalthea', 'Thebe', 'Io', 'Europa', 'Ganymede', 'Callisto']

Важно!

При присоединении списков создается новый список. Текущий список не изменяется.

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

Чтобы отсортировать список, используйте метод .sort() в списке. Python сортирует список строк в алфавитном порядке, а список чисел — в числовом порядке:

regular_satellite_moons.sort()
print("The regular satellite moons of Jupiter are", regular_satellite_moons)

# Output
# The regular satellite moons of Jupiter are ['Adrastea', 'Amalthea', 'Callisto', 'Europa', 'Ganymede', 'Io', 'Metis', 'Thebe']

Чтобы отсортировать список в обратном порядке, вызовите .sort(reverse=True) в списке:

regular_satellite_moons.sort(reverse=True)
print("The regular satellite moons of Jupiter are", regular_satellite_moons)

# Output
# The regular satellite moons of Jupiter are ['Thebe', 'Metis', 'Io', 'Ganymede', 'Europa', 'Callisto', 'Amalthea', 'Adrastea']

Важно!

При использовании sort текущий список изменяется.