🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Молоко
Хлеб
Яйца
Сыр
Чай
1. Молоко
2. Хлеб
3. Яйца
4. Сыр
5. Чай
Список (list) – это упорядоченная и изменяемая коллекция, которая может содержать элементы различных типов. Слово "изменяемая" (mutable) означает, что вы можете добавлять, удалять или изменять элементы списка уже после его создания. Списки в Python аналогичны массивам в других языках программирования, но предоставляют значительно больше гибкости и встроенных функций.
Полезный совет: Используйте списки, когда вам важен порядок элементов и когда вам может понадобиться изменять содержимое коллекции в процессе работы программы.
Список создается с помощью квадратных скобок [] или с помощью функции-конструктора list().
# Пустой список
my_list = []
# Список с несколькими элементами
my_list = [1, 2, 3, 4, 5]
# Список с элементами разных типов
my_list = [1, "hello", 3.14, True]
# Создание списка из другого итерируемого объекта, например, строки
char_list = list("Python")
print(char_list) # Вывод: ['P', 'y', 't', 'h', 'o', 'n']
Есть несколько способов получить список от пользователя.
# Способ 1: Ввод через функцию eval()
# **ВНИМАНИЕ:** Использовать eval() с пользовательским вводом КРАЙНЕ НЕБЕЗОПАСНО,
# так как это позволяет выполнить любой произвольный код.
# Используйте этот метод только в учебных целях и никогда в реальных проектах.
my_list = eval(input("Введите список в формате [1, 2, 3]: "))
print(my_list) # Вывод: [1, 2, 3]
# Способ 2: Безопасный и предпочтительный способ
# Ввод чисел через пробел
s = input("Введите числа через пробел: ") # Пользователь вводит: 1 2 3 4 5
numbers_list = s.split() # Получаем список строк: ['1', '2', '3', '4', '5']
# Чтобы работать с ними как с числами, их нужно преобразовать:
int_list = [int(num) for num in numbers_list]
print(int_list) # Вывод: [1, 2, 3, 4, 5]
Python предоставляет несколько методов для добавления элементов в список:
append(): добавляет один элемент в самый конец списка. Это самая быстрая операция по добавлению.insert(): вставляет элемент в указанную позицию (по индексу), сдвигая остальные элементы.extend(): расширяет список, добавляя в конец все элементы из другой коллекции (например, другого списка).numbers = [1, 2, 3]
# Добавление элемента в конец
numbers.append(4)
print(numbers) # Вывод: [1, 2, 3, 4]
# Вставка элемента на позицию 1
numbers.insert(1, 10)
print(numbers) # Вывод: [1, 10, 2, 3, 4]
# Добавление нескольких элементов из другого списка
numbers.extend([5, 6, 7])
print(numbers) # Вывод: [1, 10, 2, 3, 4, 5, 6, 7]
Полезный совет: Также можно объединять списки с помощью оператора +, но это создает совершенно новый список, а не изменяет существующий, в отличие от extend().
list1 = [1, 2]
list2 = [3, 4]
list3 = list1 + list2
print(list3) # Вывод: [1, 2, 3, 4]
print(list1) # Вывод: [1, 2] (остался без изменений)
Элементы списка доступны по индексу. Индексация начинается с 0 для первого элемента. Также поддерживается отрицательная индексация, где -1 — это последний элемент.
my_list = [10, 20, 30, 40, 50]
# Доступ к первому элементу
print(my_list[0]) # Вывод: 10
# Доступ к последнему элементу
print(my_list[-1]) # Вывод: 50
# Доступ к элементу по индексу 2
print(my_list[2]) # Вывод: 30
Важно: Попытка обратиться к несуществующему индексу вызовет ошибку IndexError. Всегда убеждайтесь, что индекс находится в пределах длины списка.
Вы можете легко изменять элементы списка, обратившись к ним по индексу. Это одно из ключевых отличий списков от строк, так как строки в Python неизменяемы.
my_list = [10, 20, 30, 40, 50]
my_list[1] = 25 # Заменяем элемент с индексом 1
print(my_list) # Вывод: [10, 25, 30, 40, 50]
Срезы (slices) позволяют получать части списка, создавая новый список. Синтаксис: list[start:stop:step].
start: начальный индекс (включается). Если опущен, срез начнется с начала списка.stop: конечный индекс (не включается). Если опущен, срез пойдет до конца списка.step: шаг. Если опущен, равен 1.numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# Срез с 2 по 5 индекс (элементы с индексами 2, 3, 4, 5)
sublist = numbers[2:6]
print(sublist) # Вывод: [3, 4, 5, 6]
# Срез с начала до 5 индекса
sublist = numbers[:6]
print(sublist) # Вывод: [1, 2, 3, 4, 5, 6]
# Срез с 5 индекса до конца
sublist = numbers[5:]
print(sublist) # Вывод: [6, 7, 8, 9]
# Каждый второй элемент
sublist = numbers[::2]
print(sublist) # Вывод: [1, 3, 5, 7, 9]
# Создание копии списка в обратном порядке
sublist = numbers[::-1]
print(sublist) # Вывод: [9, 8, 7, 6, 5, 4, 3, 2, 1]
Полезный совет: Срез всегда создает новый список (поверхностную копию). Это удобный способ скопировать список: new_list = old_list[:].
Списки можно перебирать с помощью цикла for.
numbers = [1, 2, 3, 4, 5]
# Способ 1: Прямой перебор (предпочтителен, если не нужен индекс)
# Этот способ более читаемый и "питонический" (Pythonic)
for number in numbers:
print(number, end=" ")
# Вывод: 1 2 3 4 5
print() # для переноса строки
# Способ 2: Перебор по индексам (когда нужен сам индекс)
for i in range(len(numbers)):
print(f"Индекс {i}, значение {numbers[i]}")
# Способ 3: Идеальный вариант, когда нужен и индекс, и значение
# Используйте встроенную функцию enumerate()
for i, number in enumerate(numbers):
print(f"Индекс {i}, значение {number}")
Очень важно помнить про диапазон функции range, если вы хотите брать за одну итерацию цикла несколько элементов, чтобы не выйти за пределы списка.
numbers = [12, 6, 2, 4, 9, 6, 10]
# Сравниваем текущий элемент со следующим
for i in range(len(numbers) - 1): # Идем до предпоследнего элемента
if numbers[i] > numbers[i+1]:
print(numbers[i], end=" ")
# Вывод: 12 6 9
Общее правило: Если в цикле вы обращаетесь к numbers[i+k], то диапазон цикла должен быть range(len(numbers) - k). Например, для обработки троек элементов (i, i+1, i+2), цикл будет for i in range(len(numbers) - 2).
numbers = [1, 2, 3, 4, 5]
# Способ 1: Через цикл и параметр end
for i in range(len(numbers)):
print(numbers[i], end=" ")
# Вывод: 1 2 3 4 5
print() # для переноса строки
# Способ 2: Более элегантный и современный
# Использование оператора "*" (распаковка списка)
print(*numbers) # по умолчанию разделитель - пробел
# Вывод: 1 2 3 4 5
# Можно указать любой другой разделитель
print(*numbers, sep=", ")
# Вывод: 1, 2, 3, 4, 5
# Создаем пустой список для товаров
goods = []
# Запрашиваем у пользователя ввод пяти товаров и добавляем их в список
for i in range(5):
goods.append(input()) # Добавляем введенный товар в список
# Выводим список товаров с их номерами
for i in range(5):
print(str(i+1) + ". " + goods[i]) # Выводим номер товара и его название
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...