Как найти все четные числа питон

Given a list of numbers, write a Python program to print all even numbers in the given list.

Example: 

Input: list1 = [2, 7, 5, 64, 14]
Output: [2, 64, 14]
Input: list2 = [12, 14, 95, 3]
Output: [12, 14]

Method 1: Using for loop

Iterate each element in the list using for loop and check if num % 2 == 0. If the condition satisfies, then only print the number. 

Python3

list1 = [10, 21, 4, 45, 66, 93]

for num in list1:

    if num % 2 == 0:

        print(num, end=" ")

Time Complexity: O(N)
Auxiliary Space: O(1), As constant extra space is used.

Method 2: Using while loop 

Python3

list1 = [10, 24, 4, 45, 66, 93]

num = 0

while(num < len(list1)):

    if list1[num] % 2 == 0:

        print(list1[num], end=" ")

    num += 1

Time Complexity: O(N)
Auxiliary Space: O(1), As constant extra space is used.

Method 3: Using list comprehension 

Python3

list1 = [10, 21, 4, 45, 66, 93]

even_nos = [num for num in list1 if num % 2 == 0]

print("Even numbers in the list: ", even_nos)

Output

Even numbers in the list:  [10, 4, 66]

Time Complexity: O(N)
Auxiliary Space: O(N), As constant extra space is used.

Method 4: Using lambda expressions 

Python3

list1 = [10, 21, 4, 45, 66, 93, 11]

even_nos = list(filter(lambda x: (x % 2 == 0), list1))

print("Even numbers in the list: ", even_nos)

Output

Even numbers in the list:  [10, 4, 66]

Time Complexity: O(n) as we are iterating through each element of the list only once.
Auxiliary Space: O(n) as a new list is created to store the even numbers from the given list.

Method 5: Using Recursion

Python3

def evennumbers(list, n=0):

    if n == len(list):

        exit()

    if list[n] % 2 == 0:

        print(list[n], end=" ")

    evennumbers(list, n+1)

list1 = [10, 21, 4, 45, 66, 93]

print("Even numbers in the list:", end=" ")

evennumbers(list1)

Output

Even numbers in the list: 10 4 66 

Time complexity: O(n), The time complexity of this algorithm is O(n), where n is the length of the list, since it traverses the list only once.
Auxiliary Space: O(n), The auxiliary space is O(n) as the recursion needs to store the list and the parameters of the function in the call stack.

Method 6: Using enumerate function 

Python3

list1 = [2, 7, 5, 64, 14]

for a, i in enumerate(list1):

    if i % 2 == 0:

        print(i, end=" ")

Time Complexity: O(n)
Auxiliary Space: O(1)

Method 7: Using pass 

Python3

list1 = [2, 7, 5, 64, 14]

for i in list1:

    if (i % 2 != 0):

        pass

    else:

        print(i, end=" ")

Time complexity: O(n), where n is total number of values in list1.

Auxiliary Space: O(1)

Method 8: Using numpy.array

Python3

import numpy as np

temp = [2, 7, 5, 64, 14]

li = np.array(temp)

even_num = li[li % 2 == 0]

print(even_num)

Output:

[ 2 64 14]

Time complexity: O(N), where n is the number of elements in the input list. 
Auxiliary space: O(N)

Method 9: Using not and Bitwise & operator 

we can find whether a number is even or not using & operator. We traverse all the elements in the list and check if not element&1. If condition satisfied then we say it is an even number

Python3

list1=[39,28,19,45,33,74,56]

for element in list1:

  if not element&1

    print(element,end=' ')

Time Complexity: O(N)
Auxiliary Space: O(1), As constant extra space, is used.

Method 10: Using bitwise | operator

we can find whether a number is even or not using | operator. We traverse all the elements in the list and check if not element | 1 == element. If the condition satisfied, then we say it is an odd number. 

Python3

list1=[39,28,19,45,33,74,56]

for element in list1:

    if  element|1 != element:

        print(element,end=' ')

Time Complexity: O(N)
Auxiliary Space: O(1), As constant extra space, is used

Method 11: Using reduce method:

Python3

from functools import reduce

list1 = [39,28,19,45,33,74,56]

even_numbers = reduce(lambda x, y: x + [y] if y % 2 == 0 else x, list1, [])

for num in even_numbers:

    print(num, end=" ")

Time Complexity: O(n)
Auxiliary Space: O(n)

Method 12: Using numpy.where() method:

Note: install numpy module using command “pip install numpy”

Algorithm:

  1. First, we import the NumPy library.
  2. We define the input list list1.
  3. Using numpy.array(), we convert the list to a NumPy array arr.
  4. Next, we use the numpy.where() method to find the indices of the even numbers in the array.
  5. Using these indices, we extract the even numbers from the array arr using indexing.
  6. Finally, we print the extracted even numbers.

Python3

import numpy as np

list1 = [2, 7, 5, 64, 14]

arr = np.array(list1)

even_num = arr[np.where(arr % 2 == 0)]

print(even_num)

Output:

[ 2 64 14] 

Time Complexity: O(N) as the numpy.where() method takes O(N) time to find the indices of the even numbers in the array, where N is the length of the array. Indexing the array to extract the even numbers takes O(1) time for each element. Therefore, the overall time complexity of the method is O(N).
Auxiliary Space: O(N) as the space complexity of this method is O(N), as we are creating a new NumPy array to store the input list.

Method 13: Using itertools.filterfalse method

Algorithm: 

  1. Import filterfalse method from itertools. 
  2. Initialize test list. 
  3. Use filterfalse method which works on the condition if the element does not satisfy the condition then it adds to the result else filter out from the result.
  4. Print the result. 

Python3

from itertools import filterfalse

list1 = [39, 28, 19, 45, 33, 74, 56]

even_numbers = filterfalse(lambda y: y % 2, list1)

for num in even_numbers:

    print(num, end=" ")

Output:

28 74 56 

Time Complexity: O(N) Where N is the length of test list. 
Auxiliary Space: O(M) Where M is the length of even_numbers list. 

Last Updated :
08 May, 2023

Like Article

Save Article

Здравствуйте, дорогие друзья. Сегодня мы рассмотрим задачу, когда необходимо вывести все чётные и нечётные числа в заданной последовательности. Внимательно смотрим на скриншот:

Исходный код
Исходный код

Для определения чётности и нечётности мы долны использовать for, т.е. цикл с параметром. Теперь запускаем нашу программу и смотрим на результат. Не забудьте предварительно сохранить наш исходный код и нажать клавишу F5.

Результат работы программы
Результат работы программы

Мы ввели число 10 и видим, что выводятся абсолютно все числа от 1 до 10 и каждое определяется чётное оно или нет.
Вот такую вот быструю и полезную программу мы сегодня с вами написали. На этом у меня на сегодня всё. Также предлагаю подписаться на наш Ютуб-канал
ПиМ [ZveKa], там много интересных видео, всё увидите сами. До новых встреч на просторах Яндекс Дзена.
Также предлагаю посмотреть другие мои статьи по Python:

Как правильно установить язык программирования Python на персональный компьютер

Синтаксис языка программирования Python

Программируем на Python: перевод мер длины друг в друга

Программируем на Python: таблица умножения

Программируем на Python: расчёт коммунальных услуг

a = int(3)
c = float(3.4)
b = int(5)
d = float(4.5)

l = [
    (a + d),
    (c - b),
    (b * c),
    (d / a),
    (a ** 2),
    (a // 2),
    (a % 2)]

print("Список", l)
print("Количество элементов в списке", len(l))

l = input().split()
for i in l:
    if int(i) % 2 == 0:
        print(i)

Как правильно вывести четные числа в списке? У мене ничего не выводит…

Jack_oS's user avatar

Jack_oS

12.5k7 золотых знаков18 серебряных знаков48 бронзовых знаков

задан 10 фев 2021 в 8:42

Bohdan's user avatar

2

чтобы получить числа вместо

l = input().split()

(так вы получаете только список строк)

надо сделать так:

l = list(map(int, input().split()))

или так:

l = [int(obj) for obj in input().split()]

список четных чисел можно получить так:

arr = [i for i in l if i % 2 == 0]

ответ дан 10 фев 2021 в 8:44

Zhihar's user avatar

ZhiharZhihar

36.8k4 золотых знака25 серебряных знаков65 бронзовых знаков

7

  1. Вы затираете сформированный вами список новым списком, полученным через input. Попробуйте ввести числа через пробел и вы увидите результат: 1 2 3 4 5. Выведутся 2 и 4.
  2. В сформированном вами списке нет чётных чисел, поэтому ничего не выведется из этого списка, если вы закомментируете строку с input и используете ваш список из кода.

Вот вывод вашего кода, чётных чисел тут просто нет:

Список [7.5, -1.6, 17.0, 1.5, 9, 1, 1]
Количество элементов в списке 7

ответ дан 10 фев 2021 в 9:37

CrazyElf's user avatar

CrazyElfCrazyElf

65.4k5 золотых знаков19 серебряных знаков50 бронзовых знаков

Печать четных и нечетных чисел из списка Python – хорошее упражнение, если вы только начинаете работать с Python и хотите изучить его основы.

Чтобы извлечь четные и нечетные числа из списка Python, вы можете использовать цикл for и оператор Python по модулю. Второй вариант – заменить цикл for на понимание списка. Расширенный синтаксис оператора среза также позволяет нам делать это с помощью одной строки кода, но только тогда, когда у вас есть списки последовательных чисел.

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

Давайте начнем!

Как вывести нечетные числа из списка в Python?

Чтобы вывести нечетные числа из списка чисел, вы можете использовать оператор Python по модулю, связанный с математической концепцией остатка.

При делении нечетного числа на 2 остаток от деления равен 1. При делении четного числа на 2 остаток от деления равен 0.

Давайте воспользуемся этой концепцией и циклом Python for для вывода нечетных чисел из списка.

def get_odd_numbers(numbers):
    odd_numbers = []
    for number in numbers:
        if number % 2 == 1:
            odd_numbers.append(number)
    return odd_numbers

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

numbers = [2, 3, 6, 8, 13, 45, 67, 88, 99, 100]
print(get_odd_numbers(numbers))
[output]
[3, 13, 45, 67, 99]

Как вывести четные числа из списка в Python?

Это очень похоже на то, что мы видели в предыдущем разделе …

Чтобы вывести четные числа из списка чисел, мы можем извлечь числа, которые при делении на 2 возвращают остаток, равный 0.

Код идентичен тому, который мы создали для извлечения нечетных чисел с небольшой разницей в условии if внутри цикла for.

def get_even_numbers(numbers):
    even_numbers = []
    for number in numbers:
        if number % 2 == 0:
            even_numbers.append(number)
    return even_numbers

И результат функции …

numbers = [2, 3, 6, 8, 13, 45, 67, 88, 99, 100]
print(get_even_numbers(numbers))
[output]
[2, 6, 8, 88, 100]

Как создать функцию, разделяющую четные и нечетные числа в списке

Чтобы разделить нечетные и четные числа в списке, мы могли бы использовать тот же подход, основанный на цикле for, который использовался ранее, и сгенерировать два разных списка, один для нечетных и один для четных чисел.

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

Мы по-прежнему будем использовать понятие остатка …

Давайте создадим базовую функцию, которая принимает список в качестве аргумента и возвращает два списка, один из которых содержит нечетные числа, а другой – четные.

def split_list_even_odd(numbers):
    odd_numbers = [number for number in numbers if number % 2 == 1]
    even_numbers = [number for number in numbers if number % 2 == 0]
    return odd_numbers, even_numbers

Обратите внимание, что эта функция возвращает два списка Python.

Вы знаете, в каком формате эти списки получает вызывающий функцию?

Давайте разберемся…

numbers = [2, 3, 6, 8, 13, 45, 67, 88, 99, 100]
print(split_list_even_odd(numbers))
[output]
([3, 13, 45, 67, 99], [2, 6, 8, 88, 100])

Вызывающая функция получает кортеж с двумя элементами. Мы можем получить доступ к каждому из них, используя квадратные скобки и индекс.

print("The odd numbers are {}".format(split_list_even_odd(numbers)[0]))
print("The even numbers are {}".format(split_list_even_odd(numbers)[1]))
[output]
The odd numbers are [3, 13, 45, 67, 99]
The even numbers are [2, 6, 8, 88, 100]

Если вы хотите узнать больше о синтаксисе .format (), используемом в операторе печати, вы можете взглянуть на этот учебник по объединению строк Python.

Программа для печати четных и нечетных чисел от 1 до 100

Чтобы напечатать четные и нечетные числа от 1 до 100, мы могли бы сначала создать наш список чисел вручную, но это займет много времени!

Вместо этого мы будем использовать функцию Python range ().

Вот как вы можете генерировать числа от 1 до 100 с помощью функции Python range ().

>>> numbers = range(1,101)
>>> print(type(numbers))
<class 'range'>

Интересно, что тип объекта, возвращаемого функцией range (), не является списком.

Итак, что мы можем с этим сделать?

Мы все еще можем использовать цикл for или понимание списка, чтобы просмотреть все числа …

>>> [number for number in numbers]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

Используйте созданную нами ранее функцию для печати четных и нечетных чисел.

def split_list_even_odd(numbers):
    odd_numbers = [number for number in numbers if number % 2 == 1]
    even_numbers = [number for number in numbers if number % 2 == 0]
    return odd_numbers, even_numbers

numbers = range(1,101)
print("The odd numbers are {}".format(split_list_even_odd(numbers)[0]))
print("The even numbers are {}".format(split_list_even_odd(numbers)[1]))
[output]
The odd numbers are [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
The even numbers are [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

Как вывести нечетные числа из списка последовательных чисел в Python?

Самый простой способ распечатать нечетные числа из списка последовательных чисел – использовать расширенный синтаксис оператора среза.

Оператор среза возвращает фрагмент списка с заданным начальным индексом (включенным) и конечным индексом (не включенным).

list[start_index:end_index]

Давайте создадим список, содержащий числа от 1 до 10:

>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Чтобы получить первые 4 элемента списка со стандартным синтаксисом оператора среза, мы можем использовать следующее выражение.

>>> numbers[0:4]
[1, 2, 3, 4]

Примечание: как упоминалось ранее, конечный индекс не включается в список, возвращаемый оператором среза.

Чтобы получить полный список с помощью оператора среза, вы можете использовать следующий синтаксис:

>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Хорошо, но как это помогает нам получать только нечетные числа?

Для этого мы должны кое-что добавить к базовому синтаксису оператора среза, поэтому он называется расширенным синтаксисом.

С расширенным синтаксисом вы можете передать третий аргумент оператору среза – этот аргумент определяет шаг между элементами, которые должны быть извлечены из списка.

list[start_index:end_index:step]

Например, если значение шага равно 2, оператор среза будет извлекать каждые 2 числа.

Теперь, когда мы это знаем, мы готовы извлечь нечетные числа из нашего списка …

>>> numbers[::2]
[1, 3, 5, 7, 9]

В основном мы получаем полный список, потому что мы не указали начальный и конечный индексы. Кроме того, мы получаем только нечетные числа, потому что мы указали шаг, равный 2.

Как вывести четные числа из списка последовательных чисел в Python?

Это очень похоже на то, что мы видели в предыдущем разделе …

Чтобы распечатать четные числа из списка последовательных чисел Python, вы можете использовать расширенный синтаксис среза с начальным индексом, равным 1, пустым конечным индексом и шагом, равным 2.

>>> numbers[1::2]
[2, 4, 6, 8, 10]

И вуаля!

Это довольно просто, если вы привыкнете к синтаксису оператора среза.

Программа Python для печати наибольшего четного и наибольшего нечетного числа в списке

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

Еще нам необходимо применить функцию max () к списку, возвращаемому оператором среза.

Наибольшее нечетное число

>>> max(numbers[::2])
9

Наибольшее четное число

>>> max(numbers[1::2])
10

Красиво и просто 🙂

Разработайте программу Python, которая считает четные и нечетные числа в списке, предоставленном пользователем

Прежде чем завершить это руководство, давайте посмотрим, как мы можем использовать функцию ввода Python для получения списка чисел из пользовательского ввода.

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

>>> numbers = input("Please provide a list of numbers (separated by space): ")
Please provide a list of numbers (separated by space): 1 3 6 37 56 23 89 103 346
>>> print(numbers)
1 3 6 37 56 23 89 103 346
>>> print(type(numbers))
<class 'str'>

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

Метод Python string split () позволяет преобразовать строку в список.

>>> print(numbers.split())
['1', '3', '6', '37', '56', '23', '89', '103', '346']

Это шаг вперед, но у нас все еще есть список строк, а вместо него нужен список целых чисел.

Понимание списка и функция Python int () могут использоваться для преобразования списка строк в список целых чисел:

>>> numbers = ['1', '3', '6', '37', '56', '23', '89', '103', '346']
>>> [int(number) for number in numbers]
[1, 3, 6, 37, 56, 23, 89, 103, 346]

Отлично! 🙂

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

def get_integers(numbers):
    return [int(number) for number in numbers.split()]

После преобразования пользовательского ввода в список целых чисел мы можем вызвать созданную ранее функцию split_list_even_odd ().

Вот полная программа:

def get_integers(numbers):
    return [int(number) for number in numbers.split()]
def split_list_even_odd(numbers):
    odd_numbers = [number for number in numbers if number % 2 == 1]
    even_numbers = [number for number in numbers if number % 2 == 0]
    return odd_numbers, even_numbers
numbers = input("Please provide a list of numbers (separated by space): ")
numbers = get_integers(numbers)
print("The odd numbers are {}".format(split_list_even_odd(numbers)[0]))
print("The even numbers are {}".format(split_list_even_odd(numbers)[1]))

Выполняем нашу программу…

Please provide a list of numbers (separated by space): 1 3 6 34 56 43 67 88 101 102 134
The odd numbers are [1, 3, 43, 67, 101]
The even numbers are [6, 34, 56, 88, 102, 134]

Оно работает!!

Заключение

Если у вас были какие-либо сомнения по поводу извлечения четных и нечетных чисел из списка Python перед чтением этой статьи…

… Теперь у вас есть все необходимые для этого знания.

Если вы чувствуете, что некоторые вещи все еще неясны, вернитесь и самостоятельно перепишите примеры в этом руководстве с нуля.

Практика – лучший способ изучить и запомнить конструкции Python.

Удачного кодирования! : D

Первоначально опубликовано на https://codefather.tech 25 июля 2021 г.

Больше контента на plainenglish.io

Посчитать четные и нечетные цифры числа

Определить, сколько в числе четных цифр, а сколько нечетных. Число вводится с клавиатуры.

Решение задачи на языке программирования Python

Если число делится без остатка на 2, его последняя цифра четная. Увеличиваем на 1 счетчик четных цифр even. Иначе последняя цифра числа нечетная, увеличиваем счетчик нечетных цифр odd.

В Python операцию нахождения остатка от деления выполняет знак %.

Чтобы избавиться от младшего уже учтенного разряда, число следует разделить нацело на 10. Деление нацело обозначается двумя слэшами //.

a = int(input())
 
even = 0
odd = 0
 
while a > 0:
    if a % 2 == 0:
        even += 1
    else:
        odd += 1
    a = a // 10
 
print(f'Even: {even}, odd: {odd}')

Пример выполнения:

Кроме чисто математического подхода в Python можно решить задачу “через строку”. Мы не будем переводить введенное строковое представление числа к целочисленному типу, вместо этого переберем символы строки в цикле for. Каждый символ преобразуем к числу и проверим на четность.

a = input()
 
even = 0
odd = 0
 
for i in a:
    if int(i) % 2 == 0:
        even += 1
    else:
        odd += 1
 
print("Even: %d, odd: %d" % (even, odd))

Поскольку количество четных (как и нечетных) цифр ограничено, в программу можно включить что-то типа “базы данных” и проверять каждый символ на вхождение в нее.

a = input()
 
digits = "02468"
 
even = 0
odd = 0
 
for i in a:
    if i in digits:
        even += 1
    else:
        odd += 1
 
print("Even: %d, odd: %d" % (even, odd))

Обратим внимание, что оператор in языка Python в заголовке цикла for обозначает иное, чем в заголовке условного оператора. Логическое выражение i in digits возвращает истину если i входит в состав digits. В иных случаях – ложь.

Больше задач в PDF

Добавить комментарий