Домашнее задание
1) Найдите сумму и произведение элементов введенного пользователем списка;
2) Поменять местами самый большой и самый маленький элементы списка;
3) Генерируется список случайных целых чисел. Определите, сколько в нем четных чисел, а сколько нечетных.
4) Вводится нормализованный текст, который кроме слов может содержать определенные знаки препинания. Программа строит список слов, знаки препинания [ . , : ; ! ? ( ) ] исключаются.
5) Нaпишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его cоседей. Для элeментов списка, являющиxся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся cписок «1 3 5 6 10», то на выход ожидается cписок «13 6 9 15 7». Если на вход пришло только однo число, надо вывести его же. Вывoд должен содержать одну строку с чиcлами новoго списка, разделёнными пробeлом.
1) Найдите сумму и произведение элементов введенного пользователем списка;
2) Поменять местами самый большой и самый маленький элементы списка;
3) Генерируется список случайных целых чисел. Определите, сколько в нем четных чисел, а сколько нечетных.
4) Вводится нормализованный текст, который кроме слов может содержать определенные знаки препинания. Программа строит список слов, знаки препинания [ . , : ; ! ? ( ) ] исключаются.
5) Нaпишите программу, на вход которой подаётся список чисел одной строкой. Программа должна для каждого элемента этого списка вывести сумму двух его cоседей. Для элeментов списка, являющиxся крайними, одним из соседей считается элемент, находящий на противоположном конце этого списка. Например, если на вход подаётся cписок «1 3 5 6 10», то на выход ожидается cписок «13 6 9 15 7». Если на вход пришло только однo число, надо вывести его же. Вывoд должен содержать одну строку с чиcлами новoго списка, разделёнными пробeлом.
Сегодня во всем мире отмечают День тестировщика. У этого дня очень необычная история.
Началось все в Гарварде. 9 сентября 1947 года ученые тестировали ЭВМ Mark II Aiken Relay Calculator и вдруг... обнаружили мотылька, застрявшего в контактах электромеханического реле.
Насекомое спасли, а в технический журнал внесли запись «First actual case of bug being found» (первый случай обнаружения жука). Отсюда и пошло слово bug, обозначающее ошибку, а также debugging — отладка или процесс поиска багов.
Началось все в Гарварде. 9 сентября 1947 года ученые тестировали ЭВМ Mark II Aiken Relay Calculator и вдруг... обнаружили мотылька, застрявшего в контактах электромеханического реле.
Насекомое спасли, а в технический журнал внесли запись «First actual case of bug being found» (первый случай обнаружения жука). Отсюда и пошло слово bug, обозначающее ошибку, а также debugging — отладка или процесс поиска багов.
Стоит ли делать продолжение по оперативной памяти?
Anonymous Poll
83%
Да, давай
5%
Нет, я уже все знаю
13%
Мне всеравно
#sammelsurium
Давайте сыграем в игру?
Челлендж от Machine Learning Lab Университета Триеста (Италия) предлагает решить 12 задач разного уровня сложности. Многие ли из вас смогут набрать 100/100 и доказать мастерское владение регулярками?
play.inginf.units.it
Давайте сыграем в игру?
Челлендж от Machine Learning Lab Университета Триеста (Италия) предлагает решить 12 задач разного уровня сложности. Многие ли из вас смогут набрать 100/100 и доказать мастерское владение регулярками?
play.inginf.units.it
#sammelsurium
Многие из нас задумывались, а возможно, уже сделали свои первые шаги в изучении глубокого обучения, нейросетей и ИИ, но большинство не может найти подходящей литературы, не требующей владения математики уровня университета, и, к сожалению, бросают эту манящую затею, так и не добившись ничего более нейронки, предсказывающей значение xor для двух битов. На помощь приходит "Грокаем Глубокое обучение" Эндрю Траска. Признаться, перед прочтением, я не верил, действительно ли эта книга способна повторить успех легендарной "Грокаем Алгоритмы" Бхаргавы, но после не осталось никаких сомнений - самое то для новичка. Как бонус для читателей канала, в книге используется python и jupiter, что дает возможность лишний раз попрактиковаться в "питончике" и найти что-то новое для себя
Многие из нас задумывались, а возможно, уже сделали свои первые шаги в изучении глубокого обучения, нейросетей и ИИ, но большинство не может найти подходящей литературы, не требующей владения математики уровня университета, и, к сожалению, бросают эту манящую затею, так и не добившись ничего более нейронки, предсказывающей значение xor для двух битов. На помощь приходит "Грокаем Глубокое обучение" Эндрю Траска. Признаться, перед прочтением, я не верил, действительно ли эта книга способна повторить успех легендарной "Грокаем Алгоритмы" Бхаргавы, но после не осталось никаких сомнений - самое то для новичка. Как бонус для читателей канала, в книге используется python и jupiter, что дает возможность лишний раз попрактиковаться в "питончике" и найти что-то новое для себя
Функция range и цикл for
Функция range возвращает последовательность чисел. В примере ниже возвращается список из 10 последовательных целых чисел с приращением 1, начиная со значения 0.
Если два аргумента, то будет создан объект с диапозоном от первого аргумента до второго. Например:
Результат:
Цикл for может обходить любой итератор Python. Мы уже видели, как именно он может работать с функцией range. Давайте взглянем, может ли он выполнять итерацию со словарем.
Функция range возвращает последовательность чисел. В примере ниже возвращается список из 10 последовательных целых чисел с приращением 1, начиная со значения 0.
numbers = list(range(10))
print(numbers)
Результат:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Если функция range присвоить один аргумент, объект будет иметь диапазон от 0 до указанного аргумента.Если два аргумента, то будет создан объект с диапозоном от первого аргумента до второго. Например:
numbers = list(range(3, 6))
print(numbers)
print(range(20) == range(0, 20))
Результат:
[3, 4, 5]
True
Функции range может присваиваться третий аргумент, который задает интервал числовой последовательности. Третий аргумент должен быть целым числом.numbers = list(range(5, 20, 2))
print(numbers)
Результат:[5, 7, 9, 11, 13, 15, 17, 19]
А теперь давайте познакомимся с циклом for. for number in range(5):
print(number)
Что здесь произошло? Давайте почитаем слева на право, чтобы понять это. Для каждого числа в диапазоне 5 мы вводим число. Мы знаем, что если мы вызываем range со значением 5, мы получим список из 5 элементов. Так что каждый раз, проходя через цикл, она выводит каждый из элементов.Цикл for может обходить любой итератор Python. Мы уже видели, как именно он может работать с функцией range. Давайте взглянем, может ли он выполнять итерацию со словарем.
a_dict = {1:"one", 2:"two", 3:"three"}Результат:
keys = a_dict.keys()
keys = sorted(keys)
for key in keys:
print(key)
1
2
3
Во-первых, мы создали словарь, в котором ключи выступают в качестве целых чисел, вместо строк. Далее, мы извлекли ключи из словаря. Каждый раз, когда вы вызываете метод keys(), он возвращает неупорядоченный список ключей. Если вы выведите их, и увидите, что они расположен в порядке по возрастанию, то это просто случайность. Теперь у нас есть доступ к ключам словаря, которые хранятся в переменной, под названием keys. Мы сортируем наш список, после чего используем цикл for в нем.Определите, что будет напечатано в результате выполнения следующей программы:
▪️ 49
▫️ 50
▪️ 51
▫️ 52
s = 0
for k in range(3,11):
s = s + k
print(s)
▪️ 49
▫️ 50
▪️ 51
▫️ 52
#Python
Differences Between bytes, str, and
unicode
In Python 3, there are two types that represent sequences of characters: bytes and str.
bytes contain raw 8-bit values (binary data)
str contain Unicode characters
In Python 2, there are str and unicode.
str contain raw 8-bit values (binary data)
unicode contain Unicode characters
Use of functions:
Unicode -> binary data = encode(‘utf-8’)
binary data -> Unicode = decode(‘utf-8’)
Or you can use different encoding, but utf-8 is most commonly used.
Python 2:
1) unicode and str instances seem to be the same type
when a str only contains 7-bit ASCII characters
2) file operations default to binary encoding
Python3:
1) bytes and str instances are never equivalent—
not even the empty string—so you must be more deliberate about the types of character
2) operations involving file handles (returned by the
open built-in function) default to UTF-8 encoding
So, If you want to read or write binary data to/from a file, always open the file using a binary mode (like 'rb' or 'wb')
Differences Between bytes, str, and
unicode
In Python 3, there are two types that represent sequences of characters: bytes and str.
bytes contain raw 8-bit values (binary data)
str contain Unicode characters
In Python 2, there are str and unicode.
str contain raw 8-bit values (binary data)
unicode contain Unicode characters
Use of functions:
Unicode -> binary data = encode(‘utf-8’)
binary data -> Unicode = decode(‘utf-8’)
Or you can use different encoding, but utf-8 is most commonly used.
Python 2:
1) unicode and str instances seem to be the same type
when a str only contains 7-bit ASCII characters
2) file operations default to binary encoding
Python3:
1) bytes and str instances are never equivalent—
not even the empty string—so you must be more deliberate about the types of character
2) operations involving file handles (returned by the
open built-in function) default to UTF-8 encoding
So, If you want to read or write binary data to/from a file, always open the file using a binary mode (like 'rb' or 'wb')
Не против ли вы контента на английском?
Anonymous Poll
60%
Не против, я все понимаю
40%
Против, я не понимаю английский
#sammelsurium
Многие ли из вас слышали о Cython - универсальном языке программирования, расширяющим возможности стандартного Python? А Вы уже работали на нем? Самое время начать, но для начала немного преимуществ:
х Строгая типизация переменных
х Доступ к функциям и методам C/C++
x Очень схожий синтаксис с Python и, как следствие, высокие скорость кодирования и читаемость кода
х Высокая скорость работы
x Возможность транслирования Си кода в файл предоставит новичкам возможность более детального изучения преобразования кода высокого уровня, а также поможет с сосвоением новых конструкций языка Си
Самое время начать!
Статья для демонстрации возможностей Cython:
https://m.habr.com/ru/company/ruvds/blog/462487/
Документация (куда же без нее?):
https://cython.readthedocs.io/en/latest/index.html
Многие ли из вас слышали о Cython - универсальном языке программирования, расширяющим возможности стандартного Python? А Вы уже работали на нем? Самое время начать, но для начала немного преимуществ:
х Строгая типизация переменных
х Доступ к функциям и методам C/C++
x Очень схожий синтаксис с Python и, как следствие, высокие скорость кодирования и читаемость кода
х Высокая скорость работы
x Возможность транслирования Си кода в файл предоставит новичкам возможность более детального изучения преобразования кода высокого уровня, а также поможет с сосвоением новых конструкций языка Си
Самое время начать!
Статья для демонстрации возможностей Cython:
https://m.habr.com/ru/company/ruvds/blog/462487/
Документация (куда же без нее?):
https://cython.readthedocs.io/en/latest/index.html
Хабр
Cython: более чем 30-кратное ускорение Python-кода
Python — это язык, который любят многие программисты. Этим языком невероятно легко пользоваться. Всё дело в том, что код, написанный на Python, отличается интуитивной понятностью и хорошей...
#Heroku
Getting started with Heroku.
If you have a repository you need to deploy to heroku, you should follow these commands:
Getting started with Heroku.
If you have a repository you need to deploy to heroku, you should follow these commands:
$ heroku login
$ git init
$ git add .
$ git commit -m "Initial commit"
$ heroku create
$ git push heroku master
If you already have a heroku repository, in order to connect to that repository, you should: $ heroku git:remote -a app_name
If you have build limit errors:$ heroku builds:cancel
$ heroku restart
To connect to heroku remote terminal:$ heroku run bash
#Python
Подумайте об использовании выражения-генераторов вместо списковых включений.
Списковые включения оптимальны для небольшого количества значений, но если у вас куча данных, списковые включения могут занимать значительную память и вызвать сбой.
Например, вы хотите посчитать сколько всего символов в каждой строчке файла. При использовании списковых включений вы должны будете хранить длину каждой строки в памяти, а если файл очень большой, это становится проблематично.
Таким образом, при большом количестве данных лучше использовать выражения-генераторы, чтобы эффективно использовать память.
Подумайте об использовании выражения-генераторов вместо списковых включений.
Списковые включения оптимальны для небольшого количества значений, но если у вас куча данных, списковые включения могут занимать значительную память и вызвать сбой.
Например, вы хотите посчитать сколько всего символов в каждой строчке файла. При использовании списковых включений вы должны будете хранить длину каждой строки в памяти, а если файл очень большой, это становится проблематично.
value = [len(x) for x in open(‘/tmp/my_file.txt’)]
print(value)
>>>
[100, 57, 15, 1, 12, 75, 5, 86, 89, 11]
Чтобы решить эту проблему, мы можем использовать выражения-генераторы, которые не считают все значения при запуске. Вместо этого, они вычисляют разовые значения из листа. it = (len(x) for x in open(‘/tmp/my_file.txt’))
print(it)
>>>
<generator object <genexpr> at 0x101b81480>
Данный итератор двигается на шаг при одном проходе, вычисляя следующее значение. print(next(it))
print(next(it))
>>>
100
57
Таким образом, при большом количестве данных лучше использовать выражения-генераторы, чтобы эффективно использовать память.
ProgrammingFA via @like
#Python
Замыкания и области видимости переменных
Например, вы хотите отсортировать список элементов, но определенная группа элементов должна иметь приоритет и быть первой по очереди.
Примерно так выглядит реализация этой задачи:
- Python поддерживает замыкание - функция, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся ее параметрами. Поэтому функция
- В Python есть специфичный метод сравнивание кортежей, сначала сравниваются значения в нулевом индексе, затем в первом, затем во втором и так далее. Поэтому возвращаемое значение с функции
Теперь мы хотим убедиться, находится ли группа с приоритетом в общем списке. Как это сделать? Посмотрите на следующий код.
Именно. Из-за области видимости переменных. При объявлении функции
Как можно решить эту проблему? В Python 3 есть специальный синтаксис для взятия данных из замыканий - выражение
Замыкания и области видимости переменных
Например, вы хотите отсортировать список элементов, но определенная группа элементов должна иметь приоритет и быть первой по очереди.
Примерно так выглядит реализация этой задачи:
def sort_priority(values, group):
def helper(x):
if x in group:
return (0, x)
return (1, x)
values.sort(key=helper)
numbers = [8, 3, 1, 2, 5, 4, 7, 6]
group = {2, 3, 5, 7}
sort_priority(numbers, group)
print(numbers)
>>>
[2, 3, 5, 7, 1, 4, 6, 8]
Это работает так по следующим причинам:- Python поддерживает замыкание - функция, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся ее параметрами. Поэтому функция
helper
имеет доступ к переменной group, являющаяся параметром функции sort_priority
.- В Python есть специфичный метод сравнивание кортежей, сначала сравниваются значения в нулевом индексе, затем в первом, затем во втором и так далее. Поэтому возвращаемое значение с функции
helper
позволяет сортировать две различные группы.Теперь мы хотим убедиться, находится ли группа с приоритетом в общем списке. Как это сделать? Посмотрите на следующий код.
def sort_priority2(numbers, group):
found = False
def helper(x):
if x in group:
found = True
return (0, x)
return (1, x)
numbers.sort(key=helper)
return found
found = sort_priority2(numbers, group)
print(‘Found:’, found)
print(numbers)
>>>
Found: False
[2, 3, 5, 7, 1, 4, 6, 8]
Отсортировано правильно, но он не нашел ту группу, элементы которых определенно есть в общей. Из-за чего? Именно. Из-за области видимости переменных. При объявлении функции
helper
, мы не изменяем переменную found
, мы инициализируем новую для этой области переменную found
и приравниваем к True
. Поэтому выводится значение именно из области функции sort_priority2
.Как можно решить эту проблему? В Python 3 есть специальный синтаксис для взятия данных из замыканий - выражение
nonlocal
.def sort_priority3(numbers, group):
found = False
def helper(x):
nonlocal found
if x in group:
found = True
return (0, x)
return (1, x)
numbers.sort(key=helper)
return found
Таким образом, nonlocal
вытаскивает переменную из замыкания. Однако в случаях, когда использование nonlocal
становится сложным, лучше использовать класс. class Sorter(object):
def __init__(self, group):
self.group = group
self.found = False
def __call__(self, x):
if x in self.group:
self.found = True
return (0, x)
return (1, x)
sorter = Sorter(group)
numbers.sort(key=sorter)
assert sorter.found is True
ProgrammingFA via @like
#Python
https://habr.com/ru/post/132554/
yieldЕсли вы когда-нибудь встречали слово yield в python коде и были озадачены, что же это такое, то вы сможете найти ответ на свой вопрос в данной статье
https://habr.com/ru/post/132554/
Хабр
Как работает yield
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо б...