Фильтр четных значений в 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 шт):

Автор решения: Eugene Violent
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)
→ Ссылка