Фильтр четных значений в list
Задача:
Пользователь вводит несколько чисел. Потом из них выводятся только чётные.
Как это сделать с применением списков, циклов и условий? Возможно ли это сделать?
Я пытался это сделать, но безуспешно.
В ходе попыток найти решение, я выяснил как извлечь из известного списка чётные элементы через for
Пример:
a = [1, 2, 3, 4]
b = []
for i in a:
if i % 2 == 0:
b.append(i)
print (b)
Здесь выводятся уже из известного списка, заданного автором кода. Также я выяснил как преобразовать тип (или класс) «string», получаемый от пользователя через «input», в тип «list».
Пример. a = list(input('Введи числа'))
Но здесь есть одна из проблем, как я думаю. В этом случае введенные данные пользователем в список, но элементы списка получаются как строки, а не цифры. Выглядит это как-то так:
['1', '2']. А не [1, 2]
Как это исправить я не нашёл. Находил про команду «map», но про неё непонятно было написано и сколько не пробовал, выдавало ошибку.
Вот один из вариантов, который я пробовал:
a = list(input('Введи числа'))
b = []
for i in a:
if i % 2 == 0:
b.append()
print (b)
Были и другие способы, но я решил их здесь не писать.
Поэтому прошу, объяснить как можно решить данную задачу. Желательно подробно с полным кодом, а не «там вставь, там допиши». Я новичок и могу не понять такой ответ.
Ответы (1 шт):
numbers_string = input("Введите числа: ") # создание строки с числами через пробел
# split() возвращает список
# дальше выбираете на свой вкус какой вариант вам по душе
string_to_list = [int(number) for number in numbers_string.split(' ')] # с применением генератора
string_to_list = []
for number in numbers_string.split(' '): # с применением цикла
string_to_list.append(int(number))
even = [number for number in string_to_list if number % 2 == 0] # с применением генератора
even = []
for number in string_to_list: # с применением цикла
if number % 2 == 0:
even.append(number)
print(string_to_list, even)