ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Комбинирование цикла for и условия if в Python: примеры

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для элегантной и функциональной комбинации циклов for и условий if используйте списковые включения. С помощью них можно решать подобные задачи одной строкой кода:

Python
Скопировать код
results = [x ** 2 for x in range(10) if x % 2 == 0]

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

Python
Скопировать код
results_gen = (x ** 2 for x in range(10) if x % 2 == 0)

Выбор способа реализации зависит от конкретной ситуации. Однако в большинстве случаев списковые включения и генераторные выражения помогут написать чистый и лаконичный код.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Эффективное использование и другие случаи применения

Пройдите дальше основных приемов и изучите методы более высшего уровня:

  • Используйте операции над множествами, вроде set.intersection() для выделения общих элементов и set.difference() для отслеживания уникальных.
  • Применяйте функцию sorted() для упорядочивания элементов после проведения операций над множествами.
  • Убедитесь в том, что ваш код совместим с разными версиями Python.

Встроенная генерация кода улучшает его читаемость, облегчая восприятие:

Python
Скопировать код
def get_even_squares(numbers):
    return (x ** 2 for x in numbers if x % 2 == 0)
      
squares = get_even_squares(range(10))

Рассмотрите использование функций из модуля operator и частичного применения функций для создания чёткого интерфейса:

Python
Скопировать код
from functools import partial
from operator import mul

twice = partial(mul, 2)
results = [twice(x) for x in range(10) if x > 5]

Визуализация

Сочетание цикла for и условия if можно представить на примере поиска золотых камней в речном русле:

Python
Скопировать код
for stone in riverbed:
    if is_gold(stone):
        collect(stone)

Пример процедуры, напоминающей поиск сокровищ:

Markdown
Скопировать код
Начало: [🪨,🪨,🪨,🪨,✨,🪨,✨]
Конец: [         ✨,         ✨]

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

Пайтонические принципы и трюки

Профессиональное использование filter()

Сочетайте функцию filter() со стрелочными функциями для осуществления функционального подхода:

Python
Скопировать код
filtered_results = filter(lambda x: x if x % 2 == 0 else None, range(10))

Магия оператора 'not in'

С помощью оператора 'not in' можно исключать элементы с высокой скоростью:

Python
Скопировать код
whitelist = {'apples', 'oranges'}
fruits = [f for f in ['apples', 'bananas', 'oranges', 'kiwi'] if f not in whitelist]

Обороты с составной сложностью

Для сложных условий используйте функции с говорящими названиями или автономные генераторы:

Python
Скопировать код
def is_prime(num):
    # Предполагаем, что здесь функция корректно проверяет простоту числа
    pass

primes = (x for x in range(100) if is_prime(x))

Полезные материалы

  1. PEP 202 – Списковые включения — всестороннее руководство по списковым включениям.
  2. PEP 308 – Условные выражения — упрощение синтаксиса условий.
  3. Преображаем код в элегантный, идиоматический Python – YouTube — видео для тех, кто хочет лучше разобраться в языке Python.
  4. 9. Классы — Генераторные выражения — экономьте память благодаря использованию генераторов.
  5. Лямбда-выражения и анонимные функции – YouTube — глубокое погружение в мир лямбда-функций с Кори Шефером.
  6. Справочник по сортировке — Документация Python — для эффективной сортировки данных.
  7. Принципы написания кода — Руководство по Python — полезные советы по стилю написания кода.