PsychoPy
PsychoPy — это программное обеспечение для создания экспериментов в области психологии, нейронауки и экспериментальной психиатрии с использованием языка программирования Python. Он предоставляет инструменты для создания различных видов стимулов, управления временем, сбора данных и анализа результатов.
В примере на картинке мы создаем окно, текстовый стимул, отображаем его, ждем 2 секунды и затем закрываем окно. PsychoPy предоставляет богатый набор функций для создания более сложных экспериментов, таких как представление изображений, воспроизведение звуков, сбор данных о времени реакции и многое другое.
🔗 Python tricks
PsychoPy — это программное обеспечение для создания экспериментов в области психологии, нейронауки и экспериментальной психиатрии с использованием языка программирования Python. Он предоставляет инструменты для создания различных видов стимулов, управления временем, сбора данных и анализа результатов.
В примере на картинке мы создаем окно, текстовый стимул, отображаем его, ждем 2 секунды и затем закрываем окно. PsychoPy предоставляет богатый набор функций для создания более сложных экспериментов, таких как представление изображений, воспроизведение звуков, сбор данных о времени реакции и многое другое.
🔗 Python tricks
Метод str.replace()
Метод
🔗 Python tricks
Метод
str.replace()
в Python используется для замены подстроки в строке новой подстрокой. Вот базовый синтаксис метода:new_string = old_string.replace(old_substring, new_substring)где:
old_string
— исходная строка, в которой вы хотите выполнить замену.old_substring
— подстрока, которую вы хотите заменить.new_substring
— новая подстрока, которой вы хотите заменить старую подстроку.🔗 Python tricks
Ветвление выражения
Условия ветвления пишутся не после, а перед итератором.
В данном случае if-else это не фильтр перед выполнением выражения, а ветвление самого выражения, то есть переменная уже прошла фильтр, но в зависимости от условия может быть обработана по-разному!
🔗 Python tricks
Условия ветвления пишутся не после, а перед итератором.
В данном случае if-else это не фильтр перед выполнением выражения, а ветвление самого выражения, то есть переменная уже прошла фильтр, но в зависимости от условия может быть обработана по-разному!
🔗 Python tricks
Особенности выражений-генераторов (ч.1)
Генаратор нельзя писать без скобок — это синтаксическая ошибка.
При передаче в функцию дополнительные скобки необязательны.
Нельзя получить длину функцией len()
Нельзя распечатать элементы функцией print()
🔗 Python tricks
Генаратор нельзя писать без скобок — это синтаксическая ошибка.
При передаче в функцию дополнительные скобки необязательны.
Нельзя получить длину функцией len()
Нельзя распечатать элементы функцией print()
🔗 Python tricks
Особенности выражений-генераторов (ч.2)
Обратите внимание, что после прохождения по выражению-генератору оно остается пустым!
Выражение-генератор может быть бесконечным.
К выражению-генератору не применимы срезы!
Из генератора легко получать нужную коллекцию. Это подробно рассматривается в следующей главе.
🔗 Python tricks
Обратите внимание, что после прохождения по выражению-генератору оно остается пустым!
Выражение-генератор может быть бесконечным.
К выражению-генератору не применимы срезы!
Из генератора легко получать нужную коллекцию. Это подробно рассматривается в следующей главе.
🔗 Python tricks
Метод str.replace()
Метод
где:
🔗 Python tricks
Метод
str.replace()
в Python используется для замены подстроки в строке новой подстрокой. Вот базовый синтаксис метода:new_string = old_string.replace(old_substring, new_substring)
где:
old_string
— исходная строка, в которой вы хотите выполнить замену.old_substring
— подстрока, которую вы хотите заменить.new_substring
— новая подстрока, которой вы хотите заменить старую подстроку.🔗 Python tricks
Поверхностное копирование
Копирование объектов может быть выполнено как «поверхностное» (shallow) копирование или «глубокое» (deep) копирование. Различия между ними заключаются в том, как обрабатываются вложенные объекты.
Глубокое копирование мы уже рассматривали в посте выше, поэтому этот пост мы посвятим Поверхностному копированию.
При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты.
Заметьте, что изменения во вложенных объектах будут видны как в оригинале, так и в его поверхностной копии.
🔗 Python tricks
Копирование объектов может быть выполнено как «поверхностное» (shallow) копирование или «глубокое» (deep) копирование. Различия между ними заключаются в том, как обрабатываются вложенные объекты.
Глубокое копирование мы уже рассматривали в посте выше, поэтому этот пост мы посвятим Поверхностному копированию.
При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты.
Заметьте, что изменения во вложенных объектах будут видны как в оригинале, так и в его поверхностной копии.
🔗 Python tricks
Создание коллекций из выражения-генератора (ч.1)
Передачей готового выражения-генератора присвоенного переменной в функцию создания коллекции.
🔗 Python tricks
Передачей готового выражения-генератора присвоенного переменной в функцию создания коллекции.
🔗 Python tricks
Создание коллекций из выражения-генератора (ч.2)
Написание выражения-генератора сразу внутри скобок вызываемой функции создания коллекции.
🔗 Python tricks
Написание выражения-генератора сразу внутри скобок вызываемой функции создания коллекции.
🔗 Python tricks
Генерация строк
Для создания строки вместо синтаксиса выражений-генераторов используется метод строки .join(), которому в качестве аргументов можно передать выражение генератор.
Обратите внимание: элементы коллекции для объединения в строку должны быть строками!
🔗 Python tricks
Для создания строки вместо синтаксиса выражений-генераторов используется метод строки .join(), которому в качестве аргументов можно передать выражение генератор.
Обратите внимание: элементы коллекции для объединения в строку должны быть строками!
🔗 Python tricks
eval()
Eval() — это встроенная функция, которая позволяет выполнять строку кода как выражение и возвращать результат.
Eval() принимает строку в качестве аргумента и выполняет ее как код, также можно передать переменные и выражения в строку и eval() вычислит их.
Eval() также может использоваться для динамического выполнения и компиляции кода. Однако, эту функцию опасно использовать с вводом пользователя, т. к. это может привести к выполнению произвольного кода.
🔗 Python tricks
Eval() — это встроенная функция, которая позволяет выполнять строку кода как выражение и возвращать результат.
Eval() принимает строку в качестве аргумента и выполняет ее как код, также можно передать переменные и выражения в строку и eval() вычислит их.
Eval() также может использоваться для динамического выполнения и компиляции кода. Однако, эту функцию опасно использовать с вводом пользователя, т. к. это может привести к выполнению произвольного кода.
🔗 Python tricks
Библиотека cvxpy
cvxpy — эта библиотека позволяет описывать оптимизационные задачи в высокоуровневом виде и эффективно решать их с помощью численных методов.
Основные возможности cvxpy:
— Удобный синтаксис для задания целевой функции и ограничений в виде выражений Python.
— Поддержка разных типов переменных: вещественных, целочисленных, булевых.
— Возможность задания неравенств и равенств как ограничений.
— Встроенные функции для задания норм, статистических величин и других полезных выражений.
— Автоматический выбор подходящего численного решателя на основе задачи.
— Интеграция с NumPy, SciPy и другими популярными библиотеками.
cvxyp часто используется для решения задач оптимизации в машинном обучении, обработке сигналов, финансовом моделировании и других областях.
🔗 Python tricks
cvxpy — эта библиотека позволяет описывать оптимизационные задачи в высокоуровневом виде и эффективно решать их с помощью численных методов.
Основные возможности cvxpy:
— Удобный синтаксис для задания целевой функции и ограничений в виде выражений Python.
— Поддержка разных типов переменных: вещественных, целочисленных, булевых.
— Возможность задания неравенств и равенств как ограничений.
— Встроенные функции для задания норм, статистических величин и других полезных выражений.
— Автоматический выбор подходящего численного решателя на основе задачи.
— Интеграция с NumPy, SciPy и другими популярными библиотеками.
cvxyp часто используется для решения задач оптимизации в машинном обучении, обработке сигналов, финансовом моделировании и других областях.
🔗 Python tricks
Set.discard
В приведенном выше примере метод discard() используется для удаления элемента из множества. В результирующем множестве нет элемента 3, поскольку метод discard() удалил его. Если элементов нет в исходном множестве, ничего не меняется.
🔗 Python tricks
В приведенном выше примере метод discard() используется для удаления элемента из множества. В результирующем множестве нет элемента 3, поскольку метод discard() удалил его. Если элементов нет в исходном множестве, ничего не меняется.
🔗 Python tricks
Работа с enumerate()
Иногда в условиях задачи в условии-фильтре нужна не проверка значения текущего элемента, а проверка на определенную периодичность, то есть, например, нужно брать каждый третий элемент.
Для подобных задач можно использовать функцию enumerate(), задающую счетчик при обходе итератора в цикле.
🔗 Python tricks
Иногда в условиях задачи в условии-фильтре нужна не проверка значения текущего элемента, а проверка на определенную периодичность, то есть, например, нужно брать каждый третий элемент.
Для подобных задач можно использовать функцию enumerate(), задающую счетчик при обходе итератора в цикле.
🔗 Python tricks
Перебор части итерируемого.
Иногда бывает задача из очень большой коллекции или даже бесконечного генератора получить выборку первых нескольких элементов, удовлетворяющих условию.
Если мы используем обычное генераторное выражение с условием ограничением по enumerate() индексу или срез полученной результирующей коллекции, то нам в любом случае придется пройти всю огромную коллекцию и потратить на это уйму компьютерных ресурсов.
Выходом может быть использование функции islice() из пакета itertools.
🔗 Python tricks
Иногда бывает задача из очень большой коллекции или даже бесконечного генератора получить выборку первых нескольких элементов, удовлетворяющих условию.
Если мы используем обычное генераторное выражение с условием ограничением по enumerate() индексу или срез полученной результирующей коллекции, то нам в любом случае придется пройти всю огромную коллекцию и потратить на это уйму компьютерных ресурсов.
Выходом может быть использование функции islice() из пакета itertools.
🔗 Python tricks
Композиция классов
Композиция классов — это концепция, при которой один класс включает в себя объект(ы) другого класса в качестве атрибута. Это отличается от наследования, где класс наследует атрибуты и методы другого класса. Композиция обычно предпочтительна в сравнении с наследованием, так как она обеспечивает более гибкую структуру.
Композиция обычно предпочтительна, когда отношение между двумя классами является «имеет» или «включает», а не «является». Она делает код более гибким, позволяя изменять поведение объекта, не изменяя его класс напрямую.
Важно отметить, что композиция и наследование могут использоваться вместе в зависимости от конкретных требований вашей программы.
🔗 Python tricks
Композиция классов — это концепция, при которой один класс включает в себя объект(ы) другого класса в качестве атрибута. Это отличается от наследования, где класс наследует атрибуты и методы другого класса. Композиция обычно предпочтительна в сравнении с наследованием, так как она обеспечивает более гибкую структуру.
Композиция обычно предпочтительна, когда отношение между двумя классами является «имеет» или «включает», а не «является». Она делает код более гибким, позволяя изменять поведение объекта, не изменяя его класс напрямую.
Важно отметить, что композиция и наследование могут использоваться вместе в зависимости от конкретных требований вашей программы.
🔗 Python tricks
Библиотека Manim
Библиотека Manim (Mathematical Animation Engine) предоставляет инструменты для создания анимаций математических концепций с использованием Python. Эта библиотека широко используется в образовательных целях и в сообществе, занимающемся созданием математических контентов. Manim была изначально разработана Grant'ом Sanderson'ом, создателем 3Blue1Brown, для создания анимаций для его образовательных видеороликов.
Помимо этого, существует две версии Manim: Manim Community Edition (ManimCE) и Manim GL. ManimCE является развитием и поддерживается сообществом. Manim GL, с другой стороны, предоставляет улучшенные возможности OpenGL для более высокого качества анимаций.
После установки вы можете использовать команды вроде
🔗 Python tricks
Библиотека Manim (Mathematical Animation Engine) предоставляет инструменты для создания анимаций математических концепций с использованием Python. Эта библиотека широко используется в образовательных целях и в сообществе, занимающемся созданием математических контентов. Manim была изначально разработана Grant'ом Sanderson'ом, создателем 3Blue1Brown, для создания анимаций для его образовательных видеороликов.
Помимо этого, существует две версии Manim: Manim Community Edition (ManimCE) и Manim GL. ManimCE является развитием и поддерживается сообществом. Manim GL, с другой стороны, предоставляет улучшенные возможности OpenGL для более высокого качества анимаций.
После установки вы можете использовать команды вроде
manim your_script.py YourSceneName -p -ql
, чтобы создать видео на основе вашего скрипта.🔗 Python tricks
Вложенный генератор внутри генератора — двумерная из двух одномерных
Общий синтаксис: [[expression for y in iter2] for x in iter1]
Применение: генерируем двумерную структуру, используя данные из двух одномерных итераторов.
🔗 Python tricks
Общий синтаксис: [[expression for y in iter2] for x in iter1]
Применение: генерируем двумерную структуру, используя данные из двух одномерных итераторов.
🔗 Python tricks
Вложенные циклы for где циклы идут по независимым итераторам
Общий синтаксис: [expression for x in iter1 for y in iter2]
Применение: генерируем одномерную структуру, используя данные из двух итераторов.
🔗 Python tricks
Общий синтаксис: [expression for x in iter1 for y in iter2]
Применение: генерируем одномерную структуру, используя данные из двух итераторов.
🔗 Python tricks
Что делает метод sets.issubset()?
Метод sets.issubset() позволяет проверить находится ли каждый элемент множества sets в последовательности other. Метод возвращает True, если множество sets является подмножеством итерируемого объекта other, если нет, то вернет False.
Синтаксис:
sets.issubset(other).
🔗 Python tricks
Метод sets.issubset() позволяет проверить находится ли каждый элемент множества sets в последовательности other. Метод возвращает True, если множество sets является подмножеством итерируемого объекта other, если нет, то вернет False.
Синтаксис:
sets.issubset(other).
🔗 Python tricks