Встроенная функция enumerate.
Гениальная и простая и очень полезная функция. Она позволяет вам пронумеровать ваши данные. Рассмотрим на самых простых для понимания примерах, а именно на строках и списках:
Самый тривиальный вариант применения - цикл
Счастья, здоровья вам, и долгих лет жизни. А главное счастья. И здоровья. Счастья.
#python
Гениальная и простая и очень полезная функция. Она позволяет вам пронумеровать ваши данные. Рассмотрим на самых простых для понимания примерах, а именно на строках и списках:
string = 'progway'Как вы можете видеть, функция
names = ['Denis', 'Helen', 'Mark']
enumerate(names)
>>> <enumerate object at 0x00D624C8>
list(enumerate(string))
>>> [(0, 'p'), (1, 'r'), (2, 'o'), (3, 'g'), (4, ....]
list(enumerate(names))
>>> [(0, 'Denis'), (1, 'Helen'), (2, 'Mark')]
enumerate
возвращает итерируемый объект без представления для пользователя. Поэтому мы делаем списки из этих объектов через конструктор list()
. Таким образом, enumerate возвращает список пронумерованных кортежей типа (num, value)
. Самый тривиальный вариант применения - цикл
for
:for num, name in enumerate(names, 1):Как вы можете заметить, у функции enumerate я указал второй позиционный аргумент. Это число, с которого функция будет нумеровать наши данные. Изначально функция нумерует начиная с нуля, но в данном случае мы начнём с единицы.
print(f'{num}: {name}')
Счастья, здоровья вам, и долгих лет жизни. А главное счастья. И здоровья. Счастья.
#python
Что такое list comprehension в Python.
Очень удобная сущность, которая позволяет определять списки. Самое приятное тут то, что с помощью list comprehension мы определим список быстрее, чем любым другим способом, если я не ошибаюсь.
Итак, вот как выглядит полная структура:
Ну и конечно же спасибо за прочтение, это важно для меня ❤️
#python
Очень удобная сущность, которая позволяет определять списки. Самое приятное тут то, что с помощью list comprehension мы определим список быстрее, чем любым другим способом, если я не ошибаюсь.
Итак, вот как выглядит полная структура:
[foo(x) if condition else bar(x) for x in sequence]
Это общая формула. Блоки else
и if
не обязательны, то есть наше представление списков может быть упрощёно вплоть до:[x for x in sequence]
Не знаю как объяснить это кратко и понятно, получается либо так, либо так. Так что давайте напишем несколько представлений с пояснениями. Все примеры с красивой подсветкой синтаксиса можно посмотреть тут./// квадраты натуральных чисел от 1 до 10Надеюсь эти примеры оказались наглядными и помогут вам в понимании темы. Напоминаю, что все примеры с красивой подсветкой синтаксиса можно ещё раз посмотреть тут.
[x ** 2 for x in range(1, 11)]
/// только чётные натуральные числа от 1 до 20
[x for x in range(1, 21) if x % 2 == 0]
Обратите внимание на то, что if тут в конце. Такая запись характерна для list comprehension без блока else
/// получить список символов из строки
[letter for letter in word]
Насчёт многочисленных условий:
/// список чисел от 1 до 200, одновременно делящихся на 2, 7 и 11
[x for x in range(1, 201) if x % 2 == 0 and x % 7 == 0 and x % 11 == 0]
Кстати, такое число всего одно: 154 = 2 * 7 * 11
/// список кортежей типа (type, num) от 1 до 5
[("Нечётное", x) if x % 2 != 0 else ("Чётное", x) for x in range(1,6)]
Ну и конечно же спасибо за прочтение, это важно для меня ❤️
#python
Генераторы и comprehensions в Python.
Немного не так подал терминологию в предыдущем посте, на что меня справедливо поправили, спасибо.
Comprehensions ≠ генератор.
Я поспешил упростить теорию, но по хорошему путать эти сущности не нужно. В интернетах ваших часто встречается объяснение comprehensions именно как генераторов, но на самом деле генератор - это уже совершенно иная вещь, о которой я планировал рассказать чуть позже, так что в скором времени будет пост ещё и о них.
На самом деле верно определить list comprehensions как один из вариантов представления списка. Можно получить список в цикле
Прошлый пост я поправил, в следующих постах постараюсь больше такого не допускать. Добра вам.
#python
Немного не так подал терминологию в предыдущем посте, на что меня справедливо поправили, спасибо.
Comprehensions ≠ генератор.
Я поспешил упростить теорию, но по хорошему путать эти сущности не нужно. В интернетах ваших часто встречается объяснение comprehensions именно как генераторов, но на самом деле генератор - это уже совершенно иная вещь, о которой я планировал рассказать чуть позже, так что в скором времени будет пост ещё и о них.
На самом деле верно определить list comprehensions как один из вариантов представления списка. Можно получить список в цикле
for
, например, а можно при помощи list comprehensions. Преимущество такого представления, как я и сказал, в скорости и краткости записи. Но так как эта запись, по сути, возвращает нам новый список, часто её называют генератором, что не верно. Прошлый пост я поправил, в следующих постах постараюсь больше такого не допускать. Добра вам.
#python
Представление словарей и множеств.
Совершенно маленькое, но очень полезное дополнение к посту о list comprehensions. Аналогичным способом можно создавать списки и множества. Сразу на примере:
#python
Совершенно маленькое, но очень полезное дополнение к посту о list comprehensions. Аналогичным способом можно создавать списки и множества. Сразу на примере:
/// списокПолная формула для словарей выглядит сложнее:
[x ** 2 for x in range(1, 11)]
/// множество
{x ** 2 for x in range(1, 11)}
/// словарь
{x: x**2 for x in range(1, 11)}
{ (key if condition else defaultKey):(value if condition
else defaultValue) for key, value in sequence }
А вот для списков она аналогична list comprehensions.#python
❤1
Список доступных хештегов:
Основные:
#theory — общая теория программирования, разбор теоретических вопросов с собеседования
#quiz — короткий вопрос на свободную тему в разработке с вариантами ответов
#useful — просто полезные вещи
#blog — посты в формате блога обо мне / на свободную тему
Подгруппы:
#javascript — всё, связанное с языком
#typescript — аналогично👆
#code — посты во встроенным в текст кодом, готовые примеры
#vite — посты, которые так или иначе затрагивают сборщик
#web — всё, касательно web разработки
#principles — принципы проектирования
#react — всё, касательно React
#patterns — всё о паттернах
#data — всё о данных и манипуляциях с ними
#news — новости
#python — всё, связанное с этим языком
#mobile — мобильная разработка
#design — штучки для дизайна
#github — интересности с гита
#chatbot — мои боты и всё, что с ними связано
Основные:
#theory — общая теория программирования, разбор теоретических вопросов с собеседования
#quiz — короткий вопрос на свободную тему в разработке с вариантами ответов
#useful — просто полезные вещи
#blog — посты в формате блога обо мне / на свободную тему
Подгруппы:
#javascript — всё, связанное с языком
#typescript — аналогично
#code — посты во встроенным в текст кодом, готовые примеры
#vite — посты, которые так или иначе затрагивают сборщик
#web — всё, касательно web разработки
#principles — принципы проектирования
#react — всё, касательно React
#patterns — всё о паттернах
#data — всё о данных и манипуляциях с ними
#news — новости
@deprecated
#python — всё, связанное с этим языком
#mobile — мобильная разработка
#design — штучки для дизайна
#github — интересности с гита
#chatbot — мои боты и всё, что с ними связано
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3