Рубрики
Без рубрики

Python одна линия для петли [простое руководство]

Вау, не пропустите этот питонский трюк пишущего на петлю в качестве питона одноклассника. Вложенные для петлей, понимание списка и тройного оператора.

Автор оригинала: Chris.

Python мощный – вы можете конденсироваться многие алгоритмы в одну линию кода Python. Таким образом, возникает естественный вопрос: можете ли вы написать для цикла в одну строку кода? Эта статья исследует этот критический вопрос о критическом вопросе во всех деталях.

Как написать для цикла в одну строку кода Python?

Есть два способа написания одноклассника для цикла:

  • Метод 1 : Если корпус петли состоит из одного оператора, просто напишите это утверждение в ту же строку: Для I в пределах (10): Print (I) Отказ Это печатает первые 10 номеров к оболочке (от 0 до 9).
  • Метод 2: Если целью цикла является создание списка, вместо этого используйте список пометков списка: квадраты = [I ** 2 для I в пределах (10)] Отказ Код квадрат первые десять номеров и хранит их в списке квадраты .

Давайте посмотрим на обе варианты более подробно.

Но прежде чем мы будем двигаться дальше, я рад представить вам мою новую книгу Python Python One-listers (Amazon Link).

Если вам нравятся одноклассники, вы будете любить книгу. Это научит вам все, что нужно знать о Одно строка кода Python. Но это тоже Введение в компьютерную науку , наука о данных, машин обучения и алгоритмы. Вселенная в одной строке Python!

Книга была выпущена в 2020 году с помощью книги по программированию мирового класса Nostarch Press (San Francisco).

Ссылка: https://nostarch.com/pythononeliners.

Но достаточно промо, давайте погрузимся в первый метод – профайн …

Метод 1: однострочный для петли

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

Скажем, мы хотим написать следующее для цикла в одной строке кода:

>>> for i in range(10):
	print(i)

	
0
1
2
3
4
5
6
7
8
9

Мы можем легко сделать это, написав команду в одну строку кода:

>>> for i in range(10): print(i)

0
1
2
3
4
5
6
7
8
9

Хотя этот ответ кажется простым, интересный вопрос: Можем ли мы написать более сложный для цикла, который имеет более длинный корпус петли в одной строке?

Это намного сложнее. Хотя можно справиться о сложных алгоритмах в одной строке кода, нет общей формулы. Если вы заинтересованы в сжимании целых алгоритмов в единую строку кода, ознакомьтесь с этой статьей с 10 Python One-Liners, которые вписываются в один твит.

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

for i in range(10):
    if i<5:
        j = i**2
    else:
        j = 0    
    print(j)

Это генерирует выход:

0
1
4
9
16
0
0
0
0
0

Можем ли мы сжать его в одну строку? Ответ да! Проверьте следующий фрагмент кода:

for i in range(10): print(i**2 if i<5 else 0)

Это генерирует тот же выход, что и наш многострочный для цикла. Как получается, мы можем использовать тройной оператор в Python, который позволяет нам сжать оператор, если в одну строку. Проверьте этот учебник в нашем блоге, если вы хотите узнать больше о захватывающем тройном операторе в Python Отказ Темнарный оператор очень интуитивно понятен: просто прочитайте его слева, чтобы написать, чтобы понять его значение. В корпусе петли Печать (я ** 2, если я <5 else 0) Мы распечатаем квадратный номер Я ** 2. Если я меньше 5, в противном случае мы печатаем 0.

Давайте рассмотрим альтернативный питонский трюк, который очень популярен среди мастеров Python:

Метод 2: Понимание списка

Удаление новичков, опытных кодеров Python не может жить без этой удивительной функции Python.

Скажем, мы хотим создать список квадратных чисел. Традиционным способом было бы написать что-то вдоль этих линий:

squares = []

for i in range(10):
    squares.append(i**2)
    
print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Мы создаем пустой список квадраты и последовательно добавить еще один квадратный номер, начиная с 0 ** 2 и заканчивая 9 ** 2. Таким образом, результат является список [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] .

Понимание списка конденсирует это в одну строку кода – это также читаемое, более эффективное и краткое.

print([i**2 for i in range(10)])

Эта линия выполняет тот же вывод с гораздо меньше битов.

Тщательное руководство по пониманию списка можно найти на этом иллюстрированном ресурсе блога.

Смотрите интерактивное видеоурок в моем руководстве по пониманию списка:

Понимание списка является компактным способом создания списков. Простая формула [экспрессия + контекст].

  • Выражение: Что делать с каждым элементом списка?
  • Контекст: Какой список элементов для выбора? Он состоит из произвольного количества для и если утверждения.

Первая часть – это выражение. В приведенном выше примере это было выражение Я ** 2 Отказ Используйте любую переменную в своем выражении, которую вы определены в контексте в операторе петли.

Вторая часть – контекст Отказ В приведенном выше примере это было выражение Для меня в пределах (10) . Контекст состоит из произвольного числа для и если положения. Одна цель контекста – определить (или ограничить) последовательность элементов, на которых мы хотим применить выражение.

Метод 3: Python одна линия для цикла с Если

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

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

Пример : Многоизоляционный способ будет следующим.

squares = []

for i in range(10):
    if i%2==0:
        squares.append(i**2)
    
print(squares)
# [0, 4, 16, 36, 64]

Вы создаете пустой список квадраты И последовательно добавьте еще один квадратный номер, начиная с 0 ** 2 и заканчивая 8 ** 2, но только учитывая четные номера 0, 2, 4, 6, 8. Таким образом, результат является список [0, 4, 16, 36, 64] .

Опять же, вы можете использовать список пометков [я ** 2 для i в пределах (10) Если ] С ограничителем, если пункт (выделен жирным шрифтом) в контексте, чтобы сжать это в одной строке кода Python:

print([i**2 for i in range(10) if i%2==0])
# [0, 4, 16, 36, 64]

Эта линия выполняет тот же вывод с гораздо меньше битов.

Связанная статья : Python One-Line для петли С if.

Похожие вопросы

Давайте погрузимся в некоторые связанные вопросы, которые могут прийти к вашему мнению.

Что такое выражение генератора?

А выражение генератора это простой инструмент для генерации итераторов. Если вы используете для петли для петли, вы часто повторяете итератор. Например, выражение генератора явно не создает список в памяти. Вместо этого динамически генерирует следующий элемент в том, что он идет по поводу уникального. Мы использовали выражение генератора в операторе печати () выше:

print(i**2 if i<5 else 0)

Вокруг выражения генератора нет квадратных кронштейнов, так как это так для поручения списка.

Как создать вложенное для цикла в одной строке?

Мы не можем написать простое вложенное для цикла в одной строке Python.

Скажем, вы хотите написать вложенное петлю, как следующее в одной строке кода Python:

for i in range(3):
    for j in range(3):
        print((i,j))

'''
(0, 0)
(0, 1)
(0, 2)
(1, 0)
(1, 1)
(1, 2)
(2, 0)
(2, 1)
(2, 2)
'''

При попытке написать это в одну строку кода, мы получаем синтаксисную ошибку:

for i in range(3): for j in range(3): print((i,j))
# Syntax Error

Тем не менее, мы можем создать заявление о вложенном списке.

print([(i,j) for i in range(3) for j in range(3)])
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1),
# (1, 2), (2, 0), (2, 1), (2, 2)]

Это только приводит к чуть более сложной контекстной части Для I в диапазоне (3) для J в диапазоне (3) . Но это управляется.

Куда пойти отсюда

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

Если вы хотите узнать язык Python by Heart, присоединяйтесь к моим бесплатным курсу электронной почты Python. Это на 100% на основе бесплатных чис-листов Python и урокам Python. Это весело, легко, и вы можете оставить в любое время.

Python One-Liners Книга

Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.

Python One-listers научит вас читать и писать «одноклассники»: краткие заявления полезных функций, упакованных в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.

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

Используйте структуры данных для решения проблем реальных проблем, например, использование булевой индексации для поиска городов с загрязнением выше среднего Используйте Numpy Основы, такие как массив, форма, ось, тип, вещание, расширенная индексация, нарезка, сортировка, поиск, агрегация и статистика Рассчитайте базовую статистику многомерных массивов данных и алгоритмы K-означает для безоговорочного обучения Создайте более усовершенствованные регулярные выражения с помощью группировки и названных групп, отрицательные LookAeads, сбежавшие символы, пробелы, наборы символов (и наборы отрицательных символов) и жадные/негридические операторы Понимать широкий ассортимент темы компьютерных наук, включая анаграммы, палиндромы, сверты, перестановки, факториалы, простые числа, цифры фибоначчи, обфускации, поиск и алгоритмическую сортировку

К концу книги вы узнаете, как писать Python в его самых утонченных, и создавать краткие, красивые куски «Python Art» в простой строке.

Получите свой Python One-Liners сейчас !!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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

Оригинал: “https://blog.finxter.com/python-one-line-for-loop-a-simple-tutorial/”