🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Маргарита
Пепперони
Маргарита
Гавайская
Маргарита
СТОП
Маргарита
3
В Python можно создать список из строки несколькими способами, в зависимости от формата исходной строки. Чаще всего в задачах встречается строка чисел, разделенных пробелом.
Это самый распространенный и "пайтонический" (Pythonic) способ. Он читаемый и быстрый.
# Исходная строка
input_string = "1 2 3 4 5"
# Шаг 1: Разделение строки на подстроки по пробелу
string_list = input_string.split()
# Результат: ['1', '2', '3', '4', '5']
# Шаг 2: Преобразование каждой подстроки в целое число
int_list = [int(num) for num in string_list]
print(int_list) # Вывод: [1, 2, 3, 4, 5]
# Конечно, эти два шага почти всегда объединяют в одну строку для краткости:
int_list_oneline = [int(num) for num in input_string.split()]
print(int_list_oneline) # Вывод: [1, 2, 3, 4, 5]
Полезный совет: Метод .split() очень гибкий. Если числа в строке разделены не пробелом, а, например, запятой, просто передайте этот разделитель в качестве аргумента: input_string.split(','). Если вы вызовете .split() без аргументов, он разделит строку по любым пробельным символам (пробелы, табы, переносы строк) и удалит пустые строки, что очень удобно для "грязных" данных.
map()Функция map() применяет указанную функцию (в нашем случае int) к каждому элементу последовательности (в нашем случае к списку, который вернул .split()). Это может быть немного быстрее для очень больших объемов данных, но часто считается менее читаемым, чем генератор списка.
# Исходная строка
input_string = "1 2 3 4 5"
# Разделение строки и преобразование с использованием map
# map() возвращает специальный объект-итератор, а не список
map_object = map(int, input_string.split())
# Чтобы получить список, нужно явно преобразовать этот объект
int_list = list(map_object)
print(int_list) # Вывод: [1, 2, 3, 4, 5]
Краткое пояснение функций:
input_string.split(): Превращает строку в список подстрок. "1 2 3" станет ['1', '2', '3'].map(function, iterable): Применяет function к каждому элементу iterable. map(int, ['1', '2', '3']) последовательно выполнит int('1'), int('2'), int('3').list(iterable): Преобразует итерируемый объект (например, результат map) в полноценный список.Списки в Python — это изменяемые структуры данных с множеством полезных методов.
numbers = [1, 4, 5, 6, 7, 4, 3, 2]
# .index(value): возвращает индекс первого вхождения элемента.
# Если элемента нет в списке, произойдет ошибка ValueError!
index_of_4 = numbers.index(4)
print(f"Индекс первой четверки: {index_of_4}") # Вывод: Индекс первой четверки: 1
# .count(value): возвращает количество вхождений элемента.
count_of_4 = numbers.count(4)
print(f"Количество четверок: {count_of_4}") # Вывод: Количество четверок: 2
# .sort(): сортирует список "на месте" (in-place), то есть изменяет сам список.
# Ничего не возвращает (точнее, возвращает None).
numbers.sort()
print(f"Отсортированный список: {numbers}") # Вывод: Отсортированный список: [1, 2, 3, 4, 4, 5, 6, 7]
# Для сортировки по убыванию используйте аргумент reverse=True
numbers.sort(reverse=True)
print(f"Отсортированный по убыванию: {numbers}") # Вывод: Отсортированный по убыванию: [7, 6, 5, 4, 4, 3, 2, 1]
# .reverse(): переворачивает список "на месте".
numbers.reverse()
print(f"Перевернутый список: {numbers}") # Вывод: Перевернутый список: [1, 2, 3, 4, 4, 5, 6, 7]
# .copy(): создает поверхностную копию списка.
# Это важно, когда вы хотите изменить копию, не затрагивая оригинал.
numbers_copy = numbers.copy()
print(f"Копия списка: {numbers_copy}") # Вывод: Копия списка: [1, 2, 3, 4, 4, 5, 6, 7]
Важно: Не путайте метод .sort() и встроенную функцию sorted().
my_list.sort() изменяет my_list.new_list = sorted(my_list) создает новый отсортированный список new_list, а my_list остается без изменений. Это предпочтительнее, если вам нужно сохранить исходный порядок.numbers = [1, 10, 2, 3, 4, 5, 6, 7]
# .remove(value): удаляет первый найденный элемент с указанным значением.
# Если такого элемента нет, будет ошибка ValueError.
numbers.remove(10)
print(numbers) # Вывод: [1, 2, 3, 4, 5, 6, 7]
# .pop([index]): удаляет элемент по индексу и возвращает его.
# Если индекс не указан, удаляет и возвращает последний элемент.
# Это очень удобно для реализации структур данных вроде стека.
last_element = numbers.pop() # Удаляем последний элемент
print(f"Удаленный элемент: {last_element}") # Вывод: Удаленный элемент: 7
print(numbers) # Вывод: [1, 2, 3, 4, 5, 6]
element_at_index_2 = numbers.pop(2) # Удаляем элемент с индексом 2
print(f"Удаленный элемент: {element_at_index_2}") # Вывод: Удаленный элемент: 3
print(numbers) # Вывод: [1, 2, 4, 5, 6]
# Оператор del: удаляет элемент по индексу или целый срез.
del numbers[1] # Удаляем элемент с индексом 1
print(numbers) # Вывод: [1, 4, 5, 6]
# Удаление нескольких элементов с помощью среза
del numbers[1:3] # Удаляем элементы с индекса 1 по 3 (не включая 3)
print(numbers) # Вывод: [1, 6]
Совет: Чтобы полностью очистить список, используйте метод .clear() (numbers.clear()) или присваивание пустого среза (numbers[:] = []). Это эффективнее, чем удалять элементы по одному в цикле.
Это мощный инструмент для создания списков на основе других последовательностей. Общая структура: [выражение for элемент in последовательность if условие].
# Создание списка квадратов чисел от 0 до 9
squares = [x**2 for x in range(10)]
print(squares) # Вывод: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Создание списка только из четных чисел (фильтрация)
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # Вывод: [0, 2, 4, 6, 8]
# Создание списка из пользовательского ввода
# Цикл выполнится 3 раза, каждый раз запрашивая ввод и добавляя его в список
# user_inputs = [input("Введите значение: ") for _ in range(3)]
# print(user_inputs)
# Использование тернарного оператора (if/else) для преобразования элементов
# Заменить нечетные числа на 0, а четные оставить как есть
numbers = [1, 2, 3, 4, 5, 6]
transformed_list = [x if x % 2 == 0 else 0 for x in numbers]
print(transformed_list) # Вывод: [0, 2, 0, 4, 0, 6]
# Комбинация фильтрации и преобразования
# Взять числа больше 5, и если они четные - оставить, если нечетные - заменить на 0.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = [x if x % 2 == 0 else 0 for x in numbers if x > 5]
print(filtered_numbers) # Вывод: [6, 0, 8, 0, 10]
Запомните синтаксис:
if ставится в конце: [x for x in data if x > 5]if/else ставится в начале: [x*2 if x > 5 else x for x in data]Функция zip() "сшивает" несколько списков в одну последовательность пар (кортежей). Это невероятно удобно для параллельной обработки данных.
names = ["Даниил", "Светлана", "Валя"]
scores = [4, 6, 8]
for name, score in zip(names, scores):
print(f"У {name} результат {score}")
# Вывод:
# У Даниил результат 4
# У Светлана результат 6
# У Валя результат 8
Важно: Функция zip() останавливается, как только закончится самый короткий из переданных списков.
names = ["Анна", "Борис", "Виктор"]
ages = [25, 30]
for name, age in zip(names, ages):
print(name, age) # "Виктор" не будет выведен, так как список ages короче
# Вывод:
# Анна 25
# Борис 30
# Создаем пустой список для хранения заказов пиццы
заказы = []
# Считываем заказы до слова "СТОП"
while True:
пицца = input() # Считываем название пиццы
if пицца == "СТОП": # Если ввели "СТОП", выходим из цикла
break
заказы.append(пицца) # Добавляем название пиццы в список
# Считываем название пиццы, которую нужно посчитать
искомая_пицца = input()
# Считаем, сколько раз искомая пицца встречается в списке заказов
количество = 0 # Инициализируем счетчик
for пицца in заказы: # Перебираем все элементы в списке заказов
if пицца == искомая_пицца: # Если текущая пицца равна искомой
количество += 1 # Увеличиваем счетчик
# Выводим количество заказов искомой пиццы
print(количество)
🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
AD
Реклама
Запускаем ваш код...