В Python очень долго не появлялся оператор
match
(switch
в других языках), во многом потому, что часто использование функций как объектов дает возможность сделать то же самое, но более коротко и читаемо. Сравните дурацкий пример с калькулятором, написанный 3 раза - на if
, на match
, и на словаре с функциями.Как обычно поздно реагирую на новости. О новом редакторе Zed за последние несколько месяцев не рассказал только ленивый. Я вообще убежденный ценитель PyCharm, но последнее время был в поисках нового редактора для видео, который был бы минималистичным как Sublime, но не настолько, чтобы не иметь встроенного терминала.
И тут попробовал убийцу VS Code, и мне он очень понравился. Так что следующее видео будет записано в Zed, а если хотите видео со сравнением всех редакторов, дайте знать
И тут попробовал убийцу VS Code, и мне он очень понравился. Так что следующее видео будет записано в Zed, а если хотите видео со сравнением всех редакторов, дайте знать
Очень хитрый вопрос с интервью. Чему равен a?
TL;DR: во второй строке будет вызвано исключение TypeError, но тройка в конец все равно добавится. Кортеж будет равен ([1, 2, 3], [4, 5]).
Первая строка выполнится без проблем - список может быть элементом кортежа, хотя на практике так делать точно не стоит. Изменить список в кортеже тоже можно - неизменяемость кортежа предполагает неизменяемость только ссылки на объект, а не его состояния. И составной оператор присвоения действительно не изменяет ссылку на объект. Проблема здесь в том, что уже после изменения объекта на месте он пытается присвоить результат первому элементу кортежа, что и вызывает TypeError.
Первая строка выполнится без проблем - список может быть элементом кортежа, хотя на практике так делать точно не стоит. Изменить список в кортеже тоже можно - неизменяемость кортежа предполагает неизменяемость только ссылки на объект, а не его состояния. И составной оператор присвоения действительно не изменяет ссылку на объект. Проблема здесь в том, что уже после изменения объекта на месте он пытается присвоить результат первому элементу кортежа, что и вызывает TypeError.
Бегущий по Pytest уже на канале
Еще у меня готово 2 сценария - по аннотациям типов и NumPy. Что-то из этого ждите на следующей неделе
Еще у меня готово 2 сценария - по аннотациям типов и NumPy. Что-то из этого ждите на следующей неделе
This media is not supported in your browser
VIEW IN TELEGRAM
Сеньор уволился
Извинияюсь, увлекся переозвучкой
Извинияюсь, увлекся переозвучкой
This media is not supported in your browser
VIEW IN TELEGRAM
Если кто-то ждет видео, оно будет сегодня или завтра
Герои не носят плащи - видео о NumPy уже на канале.
В этот раз у нас более интерактивный формат - ниже будут решения задач из видео
В этот раз у нас более интерактивный формат - ниже будут решения задач из видео
Ответы к задачам из видео
Задача #1 - проверить основное тригонометрическое тождество: сумма квадрата синуса и квадрата косинуса любого угла должна быть равна единице.
Задача #2 - нормализовать массив случайных чисел: привести все элементы к диапазону [0; 1], а потом сделать обратное преобразование.
Задача #3 - убрать выбросы из массива: удалить все элементы, которые больше среднего в 3 раза или меньше 1/3 от среднего.
Задача #1 - проверить основное тригонометрическое тождество: сумма квадрата синуса и квадрата косинуса любого угла должна быть равна единице.
import numpy as np
x = np.array([1, 2, 3])
print(np.sin(x) 2 + np.cos(x) 2)
Задача #2 - нормализовать массив случайных чисел: привести все элементы к диапазону [0; 1], а потом сделать обратное преобразование.
import numpy as np
x = np.random.randint(1, 10, (3, 3))
print(x)
x_min = x.min()
x_range = x.max() - x.min()
x = (x - x_min) / x_range
print(x)
x = x * x_range + x_min
print(x)
Задача #3 - убрать выбросы из массива: удалить все элементы, которые больше среднего в 3 раза или меньше 1/3 от среднего.
import numpy as np
x = np.array([1, 20, 30, 100, 40, 5, 200])
x = x[(x < 3 * x.mean()) & (x > x.mean() / 3)]
print(x)