Печать четных и нечетных чисел из списка 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