Блочная сортировка в Python
В этом руководстве мы рассмотрим теорию и практическую реализацию блочной сортировки в Python.
Блочная сортировка – это алгоритм, который распределяет элементы сортируемого списка по определенному количеству блоков (сегментов). После сортировки содержимое блоков добавляется, образуя отсортированную коллекцию.
Подробнее
В этом руководстве мы рассмотрим теорию и практическую реализацию блочной сортировки в Python.
Блочная сортировка – это алгоритм, который распределяет элементы сортируемого списка по определенному количеству блоков (сегментов). После сортировки содержимое блоков добавляется, образуя отсортированную коллекцию.
Подробнее
👍11🔥3
Forwarded from Python академия
Модуль sys
Данный модуль предоставляет доступ к широким возможностям интерпретатора python. К примеру, с его помощью можно завершить работу скрипта, узнать вес объекта, получить пути к библиотекам, узнать операционную систему, узнать кодировку файлов по умолчанию и многое другое.
Если вы планируете участвовать в олимпиадах, то обязаны так же обрабатывать потоковый ввод. Для своих программ можно обойтись и без него.
Я перечислил самые полезные функции, остальное всегда можно прочитать в документации (да, её стоит читать) или загуглить.
Подписывайтесь на канал 👉@pythonofff
Данный модуль предоставляет доступ к широким возможностям интерпретатора python. К примеру, с его помощью можно завершить работу скрипта, узнать вес объекта, получить пути к библиотекам, узнать операционную систему, узнать кодировку файлов по умолчанию и многое другое.
Если вы планируете участвовать в олимпиадах, то обязаны так же обрабатывать потоковый ввод. Для своих программ можно обойтись и без него.
Я перечислил самые полезные функции, остальное всегда можно прочитать в документации (да, её стоит читать) или загуглить.
Подписывайтесь на канал 👉@pythonofff
👍6
If you want to catch both
IndexError
and KeyError
, you may and should use LookupError
, their common ancestor. It proved to be useful while accessing complex nested data:try:
db_host = config['databases'][0]['hosts'][0]
except LookupError:
db_host = 'localhost'
👍11
Python 3 allows you to make some function arguments keyword-only, meaning they must be passed as
It may be useful to prevent function calls like this:
To achieve this result you should place the keyword-only arguments after varargs argument (aka
If you don't need
(arg=value)
rather than just (value)
.It may be useful to prevent function calls like this:
grep(text, pattern, True, False, True)
, where True, False, True
actually means ignore case, don't invert match, pattern is Perl regexp. It would be nice to force the only reasonable form of this call:grep(text, pattern,
ignore_case=True,
perl_regexp=True)
To achieve this result you should place the keyword-only arguments after varargs argument (aka
*args
):def grep(
text, pattern, *args,
ignore_case=False,
invert_match=False,
perl_regexp=False,
):
pass
If you don't need
*args
(like in the example), just replace it with a bare asterisk:def grep(
text, pattern, *,
ignore_case=False,
invert_match=False,
perl_regexp=False,
):
pass
👍7
Полезный совет: учите Linux
Мы публикуем новости и статьи из мира Linux
Дерзайте: https://t.me/linux_sup
Мы публикуем новости и статьи из мира Linux
Дерзайте: https://t.me/linux_sup
Чтение и запись файлов MS Word с помощью модуля Python-Docx
В этой статье вы узнаете, как в Python считывать и записывать файлы MS Word.
Существует несколько библиотек, которые можно использовать для чтения и записи в Python файлов MS Word. Мы будем использовать модуль python-docx .
Подробнее
В этой статье вы узнаете, как в Python считывать и записывать файлы MS Word.
Существует несколько библиотек, которые можно использовать для чтения и записи в Python файлов MS Word. Мы будем использовать модуль python-docx .
Подробнее
👍8🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
С чего начать путь в IT? Так ли хорош Python в качестве первого языка для изучения программирования? И какие карьерные перспективы ждут питониста?
Об этом и многом другом онлайн-встреча с Валентином Хомутенко, старшим наставником программы «Python-разработчик» на Хекслете, бэкенд-инженером в Avito.
Расскажем о том, кто такие Python-разработчики и какие задачи они решают. Поговорим о мотивации в обучении и скилах, которые пригодятся на любом этапе карьеры. Затронем тему трудоустройства — что нужно знать и уметь, чтобы позвали на собеседование и предложили оффер.
Приходите, чтобы определиться с выбором языка, лучше понять индустрию и особенности профессии изнутри.
🎉Среди участников, присутствующих на встрече, разыграем грант в размере 50% стоимости нашей полной программы по обучению Python-разработке.
Встречаемся онлайн, 31 марта, в 20:00 по Москве. Участие бесплатное. Регистрируйтесь по ссылке!
Об этом и многом другом онлайн-встреча с Валентином Хомутенко, старшим наставником программы «Python-разработчик» на Хекслете, бэкенд-инженером в Avito.
Расскажем о том, кто такие Python-разработчики и какие задачи они решают. Поговорим о мотивации в обучении и скилах, которые пригодятся на любом этапе карьеры. Затронем тему трудоустройства — что нужно знать и уметь, чтобы позвали на собеседование и предложили оффер.
Приходите, чтобы определиться с выбором языка, лучше понять индустрию и особенности профессии изнутри.
🎉Среди участников, присутствующих на встрече, разыграем грант в размере 50% стоимости нашей полной программы по обучению Python-разработке.
Встречаемся онлайн, 31 марта, в 20:00 по Москве. Участие бесплатное. Регистрируйтесь по ссылке!
👍4
In Python, you can override square brackets operator (
The unusual thing here is
But what
You can even combine tuple and slice syntaxes:
[]
) by defining __getitem__
magic method. The example is Cycle
object that virtually contains an infinite number of repeated elements: class Cycle:
def __init__(self, lst):
self._lst = lst
def __getitem__(self, index):
return self._lst[index % len(self._lst)]
print(Cycle(['a', 'b', 'c'])[100]) # prints 'b'
The unusual thing here is
[]
operator supports a unique syntax. It can be used not only like this — [2]
, but also like this — [2:10]
, or [2:10:2]
, or [2::2]
, or even [:]
. The semantic is [start:stop:step]
but you can use it any way you want for your custom objects.But what
__getitem__
gets as an index
parameter if you call it using that syntax? The slice objects exist precisely for this case.In : class Inspector:
...: def __getitem__(self, index):
...: print(index)
...:
In : Inspector()[1]
1
In : Inspector()[1:2]
slice(1, 2, None)
In : Inspector()[1:2:3]
slice(1, 2, 3)
In : Inspector()[:]
slice(None, None, None)
You can even combine tuple and slice syntaxes:
In : Inspector()[:, 0, :]
(slice(None, None, None), 0, slice(None, None, None))
slice
is not doing anything for you except simply storing start
, stop
and step
attributes.In : s = slice(1, 2, 3)
In : s.start
Out: 1
In : s.stop
Out: 2
In : s.step
Out: 3
👍5
If you want to ignore some exception, you probably do something like this:
That will work (without printing anything), but
try:
lst = [1, 2, 3, 4, 5]
print(lst[10])
except IndexError:
pass
That will work (without printing anything), but
contextlib
let you do the same more expressively and semantically correct:from contextlib import suppress
with suppress(IndexError):
lst = [1, 2, 3, 4, 5]
lst[10]
👍17
In Python,
Despite asymmetry, that is not a mistake nor an accident. It makes perfect sense since it allows you to glue together two adjacent intervals without risk of one-off errors:
Compare to closed intervals that feel more “natural”:
This is also a reason for indexing to start from zero: range(0, N) has exactly
Dijkstra wrote an excellent article on the subject back in 1982.
range()
defines all integers in a half-open interval. So range(2, 10)
means, speaking mathematically, [2, 10)
. Or, speaking Python, [2, 3, 4, 5, 6, 7, 8, 9]
.Despite asymmetry, that is not a mistake nor an accident. It makes perfect sense since it allows you to glue together two adjacent intervals without risk of one-off errors:
[a, c) = [a, b) + [b, c)
Compare to closed intervals that feel more “natural”:
[a, c] = [a, b] + [b+1, c]
This is also a reason for indexing to start from zero: range(0, N) has exactly
N
elements.Dijkstra wrote an excellent article on the subject back in 1982.
👍7
Не можете продлить нужный сервис, оплатить хостинг или получить деньги из-за рубежа?
Ребята из rk.finaxe.ru тоже столкнулись с данной проблемой и запустили сервис, в котором граждане РФ могут оформить онлайн карту Visa или Mastercard в банке Казахстана.
Для чего это нужно:
— Оплата любых зарубежных сервисов и покупок
— Получение денег из-за рубежа
— Использование в путешествиях
Весь процесс проходит онлайн, от вас потребуется только загранпаспорт, даже вставать с дивана не понадобится!
Оформить заявку и ознакомиться с FAQ можно в боте:
https://t.me/Robokazakh_bot
Ребята из rk.finaxe.ru тоже столкнулись с данной проблемой и запустили сервис, в котором граждане РФ могут оформить онлайн карту Visa или Mastercard в банке Казахстана.
Для чего это нужно:
— Оплата любых зарубежных сервисов и покупок
— Получение денег из-за рубежа
— Использование в путешествиях
Весь процесс проходит онлайн, от вас потребуется только загранпаспорт, даже вставать с дивана не понадобится!
Оформить заявку и ознакомиться с FAQ можно в боте:
https://t.me/Robokazakh_bot
🔥4
Forwarded from Python академия
Работа с процессами в Python
С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.
Подробнее
Подписывайтесь на канал 👉@pythonofff
С появлением многоядерных процессоров стала общеупотребительной практика распространять нагрузку на все доступные ядра. Существует два основных подхода в распределении нагрузки: использование процессов и потоков. О первом мы как раз сейчас и поговорим.
Подробнее
Подписывайтесь на канал 👉@pythonofff
👍8
Sometimes you need to know the size of a generator without retrieving the actual values. Some generators support
The straightforward solution is to use an intermediate list:
Though fully functional, this solution requires enough memory to store all the yielded values. The simple idiom allows to avoid such a waste:
len()
, but this is not the rule:In : len(range(10000))
Out: 10000
In : gen = (x ** 2 for x in range(10000))
In : len(gen)
...
TypeError: object of type 'generator' has no len()
The straightforward solution is to use an intermediate list:
In : len(list(gen))
Out: 10000
Though fully functional, this solution requires enough memory to store all the yielded values. The simple idiom allows to avoid such a waste:
In : sum(1 for _ in gen)
Out: 10000
👍6👎1
Сбор данных с обходом капчи посредством PYAUTOGUI, KERAS и TENSORFLOW
Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).
Подробнее
Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).
Подробнее
👍4
Forwarded from Python академия
Итерирование с использованием функции enumerate
Функция range позволяет получить только индексы элементов списка. Функция
Получается короткий и понятный код!
В примере разберем как извлечь из списка элементы и их индекс, рис.1.
Еще одной полезной и крутой фишкой этой функции будет легкое создания счетчика. Более того, мы можем установить первоначальное значение счетчика, рис. 2.
Подписывайтесь на канал 👉@pythonofff
Функция range позволяет получить только индексы элементов списка. Функция
enumerate
генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента. Эти кортежи можно распаковать еще в заголовке for
Получается короткий и понятный код!
В примере разберем как извлечь из списка элементы и их индекс, рис.1.
Еще одной полезной и крутой фишкой этой функции будет легкое создания счетчика. Более того, мы можем установить первоначальное значение счетчика, рис. 2.
Подписывайтесь на канал 👉@pythonofff
👍13
Forwarded from Python академия
Разница между
Недавно в чате наши подписчики затрагивали эту тему, поэтому мы решили разложить всё по полочкам, чтобы в дальнейшем не возникало вопросов.
Итак, оператор
Однако Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны некоторые казусы, как в примере.
Подписывайтесь на канал 👉@pythonofff
==
и is
Недавно в чате наши подписчики затрагивали эту тему, поэтому мы решили разложить всё по полочкам, чтобы в дальнейшем не возникало вопросов.
Итак, оператор
==
проверяет равенство значений двух объектов. А оператор is в свою очередь проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.Однако Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны некоторые казусы, как в примере.
Подписывайтесь на канал 👉@pythonofff
👍12🔥1
If you have a CPU-heavy task and want to utilize all the cores you have, then
multiprocessing.Pool
is for you. It spawns multiple processes and delegates tasks to them automatically. Simply create a pool with Pool(number_of_processes)
and run p.map
with the list of inputs.In : import math
In : from multiprocessing import Pool
In : inputs = [i ** 2 for i in range(100, 130)]
In : def f(x):
...: return len(str(math.factorial(x)))
...:
In : %timeit [f(x) for x in inputs]
1.44 s ± 19.2 ms per loop (...)
In : p = Pool(4)
In : %timeit p.map(f, inputs)
451 ms ± 34 ms per loop (...)
👍7
Forwarded from Python академия
Как проверить существование переменной в Python?
Вы можете использовать
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать
in locals()
или in globals()
, чтобы проверить переменная существует в Python, разница только:in locals()
проверяет если переменная объявлена в локальной зоне видимостиin globals()
проверяет если переменная объявлена в глобальной зоне видимостиПодписывайтесь на канал 👉@pythonofff
👍6🔥1
Присоединяйся к команде VK!
Новый продукт без legacy кода, современный стэк технологий. Возможность роста в тимлида или архитектора, внутренние курсы и ревью кода от коллег.
– Уверенное знание Python
– Опыт работы от 2-х лет
– Опыт работы с реляционными СУБД
– Отличное знание базовых алгоритмов и структур данных, понимание архитектурных паттернов
– Понимание и практический опыт построения API для веб-приложений
Новый продукт без legacy кода, современный стэк технологий. Возможность роста в тимлида или архитектора, внутренние курсы и ревью кода от коллег.
– Уверенное знание Python
– Опыт работы от 2-х лет
– Опыт работы с реляционными СУБД
– Отличное знание базовых алгоритмов и структур данных, понимание архитектурных паттернов
– Понимание и практический опыт построения API для веб-приложений
👍6👎6
Как обойти капчу: нейросеть на Tensorflow,Keras,python v числовая зашумленная капча
Тема капч не нова, тем не менее, алгоритмы капч меняются, как и алгоритмы их решения. Поэтому, предлагается помянуть старое и прооперировать следующий вариант капчи
Подробнее
Тема капч не нова, тем не менее, алгоритмы капч меняются, как и алгоритмы их решения. Поэтому, предлагается помянуть старое и прооперировать следующий вариант капчи
Подробнее
👍3