Math and Code
2.03K subscribers
1 photo
101 links
• По всем вопросам: @lesha_privet

• Поддержать канал голосом: https://t.me/boost?c=2187172722

• Ссылка для друга: https://t.me/+VZi8XKZsg7s3NmNi
Download Telegram
Привет ☺️


Это мой канал про аналитику, разработку и то, как я во всём этом разбираюсь 💡.


Пишу сюда про ⌨️:

• Как устроены системы и интеграции между ними.

• Как аналитик думает и принимает решения.

• Как я вкатываюсь в разработку своих приложений и ботов на базе Telegram.

• Немного математики — но прикладной, когда она реально помогает.

Лайф-заметки: по работе, режиму, спорту, мыслям и выводам.



Навигация по тегам 👁:

Понятные разборы больших тем: архитектура систем, API, аналитика, математика.
#статья

Про жизнь, рефлексию и спорт.
#лайф

Подборки постов и навигация по каналу.
#навигация

Обзор задач и кейсов.
#решение



Добро пожаловать 🌎
Please open Telegram to view this post
VIEW IN TELEGRAM
12❤‍🔥973111
База про логарифмы ниже 😱


Логарифм – это математическая функция, которая отвечает на вопрос: в какую степень нужно возвести число a, называемое основанием, чтобы получить число b, называемое аргументом?

Простым языком, логарифм – это показатель степени, в которую нужно возвести основание, чтобы получить аргумент.


Стандартная запись выглядит так:

logₐb, где
• a — основание логарифма (всегда положительное число, отличное от 1).
• b — аргумент логарифма (любое положительное число).



Простой пример реальной записи:

2³ = 8, поэтому log₂8 = 3.



Раскидаем свойства логарифмов:

• logₐa = 1
• logₐ(bc) = logₐb + logₐc
• logₐ(b/c) = logₐb - logₐc



Посмотрим на наиболее распространенные типы логарифмов:

Десятичный логарифм:
- Обозначается как log₁₀x или lgx.
- Имеет основание равное 10.

Натуральный логарифм:
- Обозначается как ln(x).
- Имеет основание e — иррациональное число ≈ 2,718.



Ниже обзор того, как используют логарифмы в реальной жизни:

Расчет сложных процентов:
При расчете сложных процентов логарифмы используются для определения того, сколько денег вы заработаете на своих инвестициях с течением времени.

Измерение интенсивности звука:
Интенсивность звука измеряется в децибелах, которые представляют собой логарифмическую шкалу.

Определение кислотности:
Кислотность раствора измеряется по шкале pH, которая представляет собой логарифмическую шкалу.

Сжатие данных:
Логарифмы используются в алгоритмах сжатия данных, таких как ZIP и JPEG, для уменьшения размера файлов.



#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥11761
Производная ☠️


Производная функции показывает скорость изменения этой функции. Проще говоря, она говорит нам, насколько быстро функция меняется в определенной точке.

Представьте, что функция описывает пробег автомобиля. Производная этой функции в данной точке будет показывать скорость автомобиля в этот момент времени.


Хоть производные
и могут показаться далекими от нашей обыденной жизни, они на самом деле используются во многих областях:

Физика:

• Производная используется для расчета скорости, ускорения, силы и других важных физических величин.
• Инженеры используют производные для проектирования мостов, зданий и самолетов.
• Физики - для изучения движения планет и поведения атомов.

Экономика:
• Производная используется для оптимизации прибыли, минимизации затрат и анализа рыночных тенденций.
• Компании используют производные, чтобы определить, какое количество продукции им следует производить, чтобы максимизировать прибыль.

Биология:
• Производная используется для моделирования роста популяций, распространения инфекций и химических реакций в живых организмах.
• Ученые используют производные, чтобы изучать, как распространяются эпидемии, и как лекарственные препараты воздействуют на организм.

Инженерия:
• Производная используется для оптимизации формы объектов, проектирования систем управления и анализа данных.
• Например, инженеры используют производные, чтобы проектировать аэродинамичные автомобили, создавать эффективные системы кондиционирования воздуха и разрабатывать надежные системы управления.


Вот несколько примеров того, как производные используются в реальной жизни:

GPS-навигаторы:

•Используют производные, чтобы определить кратчайший маршрут и вычислить время в пути.

Медицинские изображения:
• Производные используются для улучшения качества МРТ и других изображений, полученных с помощью медицинских приборов.

Финансовые рынки:
• Аналитики используют производные для прогнозирования изменения цен на акции, облигации и другие финансовые инструменты.

Робототехника:
• Производные используются для управления движениями роботов и обеспечения их точности.


Раскидаем формулы производных некоторых элементарных функций:

1. Постоянная:

Производная константы c равна нулю:
(c)' = 0


2. Степенная функция:
Производная функции x^n, где n - любое действительное число, кроме 1, равна n*x^(n-1):
(x^n)' = n*x^(n-1)


3. Экспоненциальная функция:
Производная функции e^x равна e^x :
(e^x)' = e^x


4. Тригонометрические функции:
• Производная функции sin(x) равна cos(x):
(sin(x))' = cos(x)

• Производная функции cos(x) равна -sin(x):
(cos(x))' = -sin(x)

• Производная функции tan(x) равна 1/cos^2(x):
(tan(x))' = 1/cos^2(x)



Отметим, что:

Формулы выше — базовые 🚶. Для сложных случаев есть правила дифференцирования. Их полное описание можно найти в учебниках по матанализу 🔍.



#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9🤯3311
Вода по интегралам 🦌


В математике интегралы – это фундаментальное понятие, тесно связанное с дифференцированием 😎. Если дифференцирование позволяет нам измерять скорость изменения функции, то интегрирование – это обратная операция 😡.

Проще говоря, интегрирование помогает нам найти:

Площадь под кривой функции.

Общий объем фигуры, вращающейся вокруг оси.

Суммарное изменение функции за определенный промежуток времени.



На первый взгляд интегралы могут показаться далекими от реальной жизни, но на самом деле их используются во многих областях:

Физика:
• Расчет траекторий движения объектов.
• Анализ работы двигателей, электронных устройств и других систем.
• Изучение законов механики, термодинамики и электромагнетизма.


Инженерия:
• Проектирование мостов, зданий и других сооружений.
• Разработка автомобилей, самолетов и других транспортных средств.
• Создание систем связи, электроснабжения и других инженерных систем.


Экономика:
• Анализ спроса и предложения на товары и услуги.
• Оценка рисков и прибыли инвестиций.
• Оптимизация использования ресурсов и производственных процессов.


Биология:
• Моделирование роста популяций и распространения болезней.
• Анализ данных медицинских исследований.
• Разработка новых лекарств и методов лечения.


Искусственный интеллект:
• Обучение машин распознавать образы и делать прогнозы.
• Создание систем автономного управления и робототехники.
• Анализ больших объемов данных.


Это не все примеры. Интегралы также используются во многих других науках и дисциплинах, таких как химия, геология, метеорология и так далее ⌨️.


Теперь давайте посмотрим на пару примеров использования интегралов в реальной технике и прикладных задачах:

GPS-навигация:
• Спутники GPS используют интегралы для расчета своего положения и расстояния до пользователя.


МРТ:
• Магнитно-резонансная томография использует интегралы для создания изображений внутренних органов человека.


Авиастроение:
• Инженеры используют интегралы для проектирования крыльев самолетов, которые максимально эффективны в полете.


Финансы:
• Аналитики используют интегралы для оценки стоимости финансовых инструментов, таких как опционы.



#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥7🕊7💯731
Золотое сечение — это математическое соотношение, которое считается красивой и гармоничной пропорцией 🤗

Оно возникает в природе, применяется в искусстве и даже в архитектуре. Более подробно:


Как его нашли и что это такое?

• Золотое сечение было известно еще в Древней Месопотамии, Египте и античной Греции.

• В древнегреческой математике оно именовалось делением отрезка точкой на две части так, что бо́льшая часть относится к меньшей, как весь отрезок к бо́льшей.

• Это понятие распространялось не только на отрезки, но и на произвольные величины.



Как обозначить золотое сечение и чему оно равно?

• Число, равное отношению, обычно обозначается прописной греческой буквой φ в честь древнегреческого скульптора и архитектора Фидия — это, по сути, и есть само золотое сечение.

• Значение числа φ приближенно равно 1.6180339887498948482...



Применение золотого сечения:

В природе:
• Золотое сечение можно наблюдать в строении растений, раковинах моллюсков, форме галактик и даже в распределении лепестков цветов.

В искусстве:
• Многие художники и архитекторы используют золотое сечение для создания гармоничных композиций.

В архитектуре:
• На «золотых отрезках» основываются различные системы пропорционирования.


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥964🤔221
Разберем видео ниже 🔍


Объяснение:


Функция определяется как Z(θ) = e^(iθ) + e^(iθφ).

• Если φ - рациональное число, то существует θ = 2πn, такое что nφ является целым числом, и наблюдается периодическая картина, следовательно совпадение случается после n циклов (1 цикл = стержень посередине совершает полный оборот на 360°).

• Постараемся выяснить когда именно данное совпадение произойдет ⌨️.


Математика:

• Функция: Z(θ) = e^(iθ) + e^(iθφ).

• e^(iθ) - это стержень посередине, который создает обычную единичную окружность. Один цикл соответствует θ = 2π. Затем рисование окружности повторяется. Таким образом, θ = 2πn соответствует n циклам.

• e^(iθφ) - это внешний стержень, который вращается быстрее в φ раз, при этом его конечная точка в сочетании с внутренним стержнем создает показанный рисунок.

• Если φ - рациональное число, т.е. может быть представлено дробью двух целых чисел, а именно φ = p/q, то мы ожидаем, что рисунок повторится после q циклов, т.е. θ = 2πq.


Тогда справедливо следующее:

Z(2πq + ϑ) = e^(i(2πq + ϑ)) + e^(i(2πq + ϑ)φ)           
=
e^(i2πq) * e^(iϑ)
+
e^(i2πqφ) * e^(iϑφ)
=
e^(iϑ) + e^(iϑφ) = Z(ϑ)


Моменты, когда рисунок почти совпадает, определяются целыми числами n, где nφ - почти целое число. Вот несколько перечисленных:

5φ = 8,09
8φ = 12,94
13φ = 21,03
21φ = 33,98
26φ = 42,07


Однако, учитывая масштабирование, можно предположить совпадение при:

n = 5,702,887
или
n = 102,334,155.


то есть:

5,702,887φ = 9,227,464.99999992
или
102,334,155φ = 165,580,140.999999995.


И так далее 🤫


Референсы на автора видео 🔍


#решение 🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯865311
Немножко заметок по матрицам ✍️


Для начала кратко скажем зачем вообще нужны эти ваши матрицы в повседневной жизни. Предлагаю рассмотреть несколько примеров:

Финансы и бюджетирование:
• Матрицы используются для анализа финансовых данных, оптимизации инвестиций и управления бюджетом.


Графический дизайн и компьютерная графика:
• Матрицы позволяют трансформировать изображения, применять фильтры и эффекты.


Спорт и фитнес:
• Матрицы могут помочь в анализе тренировок, составлении планов и оптимизации питания.


Транспорт и логистика:
• Матрицы используются для оптимизации маршрутов, управления запасами и расписаниями.


Социальные науки:
• В социологии и психологии матрицы могут помочь анализировать социальные связи и взаимодействия.



Далее опишем как применяются матрицы в научной области. Несколько примеров ниже:

Линейная алгебра:
• Матрицы играют ключевую роль в линейной алгебре. Они помогают решать системы линейных уравнений, находить собственные значения и векторы, а также решать задачи оптимизации.


Графические преобразования:
• Матрицы используются для преобразования графических объектов. Например, в компьютерной графике они позволяют вращать, масштабировать и переносить изображения.


Физика и инженерия:
• Матрицы применяются при моделировании физических систем, например, при анализе электрических цепей (да-да, это важно 🤔).


Статистика и обработка данных:
• Матрицы используются для обработки данных, например, при анализе многомерных данных или в методах машинного обучения.



Теперь приправим описание небольшим количеством теории по матрицам.

Матрица — математический объект, записываемый в виде прямоугольной таблицы, который представляет собой совокупность строк и столбцов, на пересечении которых находятся его элементы (числа, символы или выражения ☠️).

Количество строк и столбцов задает размер матрицы. Размерность матрицы обычно обозначается в виде: (m х n), где m - количество строк, а n - количество столбцов.

Матрицы широко применяются в математике и физике для компактной записи и решения систем линейных алгебраических уравнений и систем дифференциальных уравнений (расскажу подробнее в будущих постах ⌨️). При этом количество строк матрицы соответствует количеству уравнений системы, а количество столбцов - количеству неизвестных величин.


Опишем пару основных формул и заметок:

Элементы матрицы:
Каждое число в матрице называется элементом матрицы. Элементы матрицы A обозначаются как a_(i,j), где i - номер строки, а j - номер столбца.


Главная диагональ матрицы:
• Это диагональ, проведенная из левого верхнего угла матрицы в правый нижний угол.


Побочная диагональ матрицы:
• Это диагональ, проведенная из левого нижнего угла матрицы в правый верхний угол.


След матрицы (trace):
• Это сумма элементов главной диагонали матрицы. Обозначается tr A, где A - это матрица.


Сложение матриц:
• Сложение матриц A и В необходимо проводить поэлементно, т.е. элемент a_(1,1) матрицы А складывается с элементом b_(1,1) матрицы В и так далее. При сложении количество строк и столбцов в слагаемых матрицах должно совпадать 🤝🤝.


Умножение матриц:
• Результатом умножения матрицы A с размерностью (m х n) и матрицы В с размерностью (n х k) будет матрица C с размерностью m х k). Элемент матрицы (C), стоящий в i-ой строке и j-ом столбце: c_(i,j), равен сумме произведений элементов i-ой строки матрицы A на соответствующие элементы j-ого столбца матрицы B 😎.



#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
95🤯421
Решил написать немного классики про планирование задач и про то, зачем записывать их на бумагу перед выполнением


Сразу перечислим список очевидных преимуществ такого подхода:

• Запись целей и задач на бумаге помогает организовать мысли и идеи.

• Это также позволяет увидеть общую картину и определить, какие задачи являются приоритетными.

• Когда вы записываете задачи, вы фокусируетесь на том, что нужно сделать. Это помогает избегать отвлекающих факторов и улучшает вашу продуктивность.

• Вычеркивание выполненных задач из списка на бумаге может мотивировать. Такая мотивация помогает делать больше и чувствовать удовлетворение.

• Запись задач на бумаге помогает не забыть как писать от руки 😦. Также, такой подход избавляет мозг от постоянной мысли, что какая-то задача была забыта или просрочена.

• Планирование задач может помочь снизить уровень стресса. Когда у вас есть четкий план действий, волнение перед неизвестным отходит на задний план.



В итоге, планирование и запись задач на бумаге — это эффективный способ управления своим временем и продуктивностью.

Но что делать, если задачи слишком большие и непонятные, например: "Написать курсовую до конца мая"?

Ответ: декомпозировать 🟦


Декомпозиция задач - это процесс разбиения сложной задачи на более мелкие и понятные части. Это важный инструмент, который помогает последовательно закрывать поставленные задачи и решать сопутствующие проблемы (да-да, они обязательно появятся😨).


Сразу опишем несколько плюсов декомпозиции:

• Большие задачи обычно являются устрашающими и сложными. Разбивая их на более мелкие части, вы делаете их более понятными.

• Когда вы работаете над одной маленькой частью сложной задачи, вы можете сосредоточиться только на ней и не отвлекаться на другие. При таком подходе итоговое решение будет максимально проработанным и последовательным.

• С самого начала можно увидеть прогресс в работе, так как каждая маленькая задача, которую вы завершаете, приближает вас к завершению большой задачи.

• Если вы работаете в команде, декомпозиция большой задачи позволит вам распределить мелкие подзадачи между членами команды. Это значительно увеличит продуктивность.



В общем и целом, декомпозиция задач помогает улучшить эффективность и продуктивность, делая большие и сложные задачи более понятными и выполнимыми 💥


#хинт 😮‍💨
Please open Telegram to view this post
VIEW IN TELEGRAM
💯10543
Что такое дифференциальное уравнение? Попробуем кратко изложить


Дифференциальное уравнение — уравнение, которое содержит независимую переменную, функцию от этой независимой переменной и ее производные различных порядков.

Давайте упростим определение: дифференциальное уравнение описывает зависимость между функцией и её изменениями 📃.


В общем виде дифференциальное уравнение выглядит так:
F(x, y, y', y", … , y^{n}) = 0.


Где:
• x — независимая переменная (обычно время или расстояние).

• y — неизвестная функция, зависящая от переменной x.

• y' — первая производная y по x.

• y'' — вторая производная y по x.

• y^{n} — n-ая производная y по x.



Для чего они вообще нужны ☠️? Давайте опишем ниже:

Моделирование природных явлений:
Дифференциальные уравнения позволяют описывать поведение физических систем, таких как движение тел, распределение тепла, электромагнитные волны, колебания струны и т. д.

Экономика и финансы:
Дифференциальные уравнения помогают моделировать экономические процессы, например: рост населения, инфляцию и даже инвестиции.

Биология и медицина:
Дифференциальные уравнения применяются для изучения биологических систем, а именно: при изучении процесса распределения вирусов, при наблюдении за ростом бактерий или при описании динамики развития/угасания популяций.


Добавим немного практики 🤪:

Опишем простой пример дифференциального уравнения.
Представим, что у нас есть бассейн с водой. Вода вытекает из него через отверстие в самом низу. Нам необходимо понять, как меняется уровень воды в бассейне с течением времени.

Пусть h(t) — это высота воды в бассейне в момент времени t. Тогда мы можем записать следующее дифференциальное уравнение:
dh(t) / dt = -k * h(t).


Где:
• dh(t) / dt — это производная высоты воды по времени, т.е. скорость изменения высоты.

• k — коэффициент, который зависит, например, от размеров сливного отверстия и площади дна бассейна.


Теперь решим это уравнение для того, чтобы понять как быстро уровень воды в бассейне будет уменьшаться 🚰. Для решения будем использовать метод разделения переменных:

1. Разделим переменные:
dh(t) / h(t) = -k * dt.


2. Интегрируем обе стороны:
• ∫ ( dh(t) / h(t) ) = ∫ ( -k * dt ).

• ln|h(t)| = -kt + C.

• Здесь: C — это произвольная постоянная, ln — натуральный логарифм.


3. Решаем уравнение относительно h(t):
h(t) = e^(C - kt).



Готово 🌊. Теперь у нас есть общее решение, которое описывает изменение высоты воды h(t) в бассейне в зависимости от времени t и коэффициента k.


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯555💯322
🌐 Нейросети 🌐

Нейросети являются вычислительными моделями, которые вдохновлены строением и функциями биологических нейронов в человеческом мозге.

В отличие от классических программ, которые следуют заранее определенным инструкциям, нейросети обучаются на больших объемах данных, постепенно совершенствуя свою способность выполнять задачи ⌨️.


Если мы представим, что нейросеть это большой механизм, то основными "шестеренками", благодаря которым он работает, будут:

Нейроны:
Основными строительными блоками нейросетей являются искусственные нейроны - математические функции, которые принимают входные данные, обрабатывают их и выдают выходные данные.

Связи:
Нейроны соединены между собой связями, каждая из которых имеет вес, определяющий силу влияния одного нейрона на другой.

Обучение:
Нейросети обучаются путем итеративного процесса обработки данных и корректировки весов связей.

Активационная функция:
Определяет, генерирует ли нейрон выходной сигнал на основе его входных данных.

Обратная связь:
Обратная связь в контексте нейронных сетей представляет собой процесс, благодаря которому сеть корректирует свои параметры на основе информации о том, насколько ее выходные данные соответствуют ожидаемым результатам.



Благодаря этим "шестеренками" нейросети могут решать широкий круг задач, например:

Распознавание образов 🔍:
Например, идентификация объектов на изображениях или распознавание речи.

Прогнозирование 🔮:
Например, прогнозирование цен на акции или предсказание погодных условий.

Кластеризация 🟦:
Например, группировка данных по схожим признакам.

Обработка естественного языка 🔊:
Например, перевод текста с одного языка на другой или извлечение информации из документов.



Важно отметить, что нейросети не являются идеальными и имеют некоторые ограничения:

Требуют больших объемов данных 💿:
Для обучения эффективной нейросети требуется большое количество размеченных данных, что может быть дорогостоящим и трудоемким.

Могут быть "черными ящиками" 👩‍💻:
Нейросети могут быть сложными для интерпретации, что затрудняет понимание того, как они принимают решения. Из-за "непрозрачности" возникает недоверие к полученным результатам.

Могут быть предвзятыми 🥷:
Нейросети могут отражать предубеждения, которые присутствовали в данных, используемых при обучении.



Добавим немного про математику, которая лежит в основе нейросетей 🚶. Опишем несколько основных методов и концепций:


1. Линейная алгебра:

Матрицы и векторы.
Нейронные сети используют матрицы и векторы для представления и обработки данных. Например, входные данные и веса нейронов часто представлены в виде матриц.

Умножение матриц.
Это основная операция, используемая для вычисления выходных значений нейронов.


2. Дифференциальное исчисление:

Градиентный спуск.
Это метод оптимизации, используемый для минимизации функции потерь. Градиентный спуск помогает корректировать веса нейронов, чтобы сеть лучше обучалась на данных.

Производные.
Используются для вычисления градиентов, которые показывают, как изменяется функция потерь при изменении весов.


3. Теория вероятностей и статистика:

Функции активации.
Например, сигмоидная функция или функция ReLU (Rectified Linear Unit) используются для введения нелинейности в модель. Эти функции помогают сети обучаться сложным паттернам.

Регуляризация.
Методы, такие как L1 и L2 регуляризация, используются для предотвращения переобучения модели.


4. Линейные модели:

Персептрон.
Это простейшая модель нейрона, которая вычисляет взвешенную сумму входных данных и применяет функцию активации.


5. Обратное распространение ошибки (Backpropagation):

Алгоритм обратного распространения.
Используется для вычисления градиентов и обновления весов в сети. Этот алгоритм позволяет сети обучаться на основе ошибок, допущенных на предыдущих шагах.


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
105💯332
Предлагаю пробежаться по числу π.

Число π является математической постоянной, которая играет важную роль в геометрии, тригонометрии, математике, физике и во многих других областях науки ⚔️⚔️.


Вот некоторые интересные факты о том самом числе π:

• Число π представляет собой отношение длины окружности к её диаметру. Напомним формулу, по которой можно вычислить длину окружности:
l = π*d, где l – длина окружности, d – диаметр окружности.


• Десятичное представление числа π бесконечно, не периодично и не может быть точно выражено в виде дроби m / n, где m и n – целые числа, и n не равно 0. Поэтому:
π является иррациональным.


• Первые несколько знаков числа π 💥:
π =3,1415926535897932384626433832795…



Добавим немного про историю числа π:

Некоторые цивилизации, такие как древний Вавилон и древний Египет, приближенно вычисляли π. Например, в древнем Вавилоне его значение было приблизительно равнялось 3.125, а в древнем Египте — 3.1605 🔫🔫.

Древнегреческий математик Архимед в 3 веке до нашей эры использовал метод вписанных и описанных многоугольников, чтобы приблизительно определить значение π. Его результат, архимедово число, было равно 22/7 или 3,14286 ⌨️.

С течением времени разрабатывались более точные методы вычисления π, включая анализ рядов, формул и алгоритмов. Сегодня знаки числа π вычисляются с использованием компьютеров с высокой точностью 😎. Например, команда Google рассчитала 100 триллионов знаков после запятой за 158 дней в 2022 году. К слову: для выполнения операций было задействовано 128 процессоров, 864 ГБ оперативной памяти и 554 ТБ объёма компьютеров 😎.


Теперь немного о применении числа π в разных областях науки:

В математике используется для расчетов окружностей, площадей кругов, объемов шаров и цилиндров, а также в теории вероятностей и статистике.

В физике - встречается в формулах, которые описывают: циркулярные и периодические движения.

В инженерии – применяется при проектировании и расчете конструкций, деталей машин, гидравлических систем и других инженерных задач.

В компьютерных науках – используется при разработке алгоритмов различной сложности, визуализации данных и моделировании процессов.



Так что, в итоге, π – это важно!


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
117432
Python (читается как «Пайтон») — предлагаю остановиться на этой теме 🐍


Сейчас Python - является широко распространенным языком программирования, который применяется во многих областях, например:

• Разработка прикладного ПО.

• Разработка web-приложений.

• Использование в качестве встраиваемого скриптового языка во многих играх, и не только (3D редактор Blender, СУБД PostgreSQL).

• Использование в научных вычислениях (Для расчетов: пакеты numPy и SciPy. Для рисования графиков: пакет PyPlot. Таким образом, Python может потягаться с пакетами типа MatLab).


Для работы с Python понадобится:

1. Сам интерпретатор, его можно взять тут (https://www.python.org/downloads/).

2. IDE или среда разработки. Отметим, что для начала она необязательна 😎.

В начале будет достаточно интерактивной оболочки самого Python. После установки интерпретатора просто запускаем python.exe 🍿. Приглашение на ввод будет выглядеть так:
>>>


Также есть возможность записывать программы в файлы с расширением .py в вашем любимом текстовом редакторе (например: "Блокнот", "Notepad++"). Для запуска файлов на выполнение можно кликнуть по ним 2 раза. Если консольное окно закрывается слишком быстро, можно в конце программы дописать следующую строку:
input()


В таком случае, интерпретатор будет ждать в конце программы нажатия enter 😎.

Также, можно воспользоваться одной из многих удобных IDE для Python (Например: "Visual Studio", "Spyder", "PyCharm"), в которых есть возможность отладки кода, подсветки синтаксиса и многие другие удобства.


Предлагаю добавить немного теории:
Python — язык со строгой динамической неявной типизацией.

Что это означает?
Смотри ответ ниже 👇.

"Строгая" означает, что язык не производит неявные преобразования типов переменных и не создаёт сюрпризов при их случайном смешении (если такое все-таки произойдет - выскочит ошибка ☹️).

"Динамическая" означает, что типы переменных определяются в процессе выполнения программы.

"Неявная" означает, что тип‌ ‌переменной‌ ‌определяется‌ ‌интерпретатором‌ ‌или‌ ‌компилятором.

Также:

• Присваивание значения переменной осуществляется с помощью знака "=".

• В Python нет специального ограничителя для блоков кода, их роль выполняют отступы. То есть то, что написано с одинаковым отступом — является одним командным блоком 1️⃣.


Теперь добавим немного практики:

Условия:
Условие задается с помощью оператора " if ", который заканчивается символом " : ". Альтернативные условия, которые будут выполняться, если первая проверка неуспешна, задаются оператором " elif ". Наконец, " else " задает ветку, которая будет выполнена в случае если ни одно из условий не выполняется 😭.

Пример:
>>> x = 13
>>> if (x<10) or (x>20):
... print("x не подходит")
... elif (10<x<20):
... print("x подходит!")
... else:
... print("x выколотая точка")
...
x подходит!


Циклы:
Простейшим видом цикла является цикл " while ". В качестве параметра он принимает условие и выполняется до тех пор, пока это условие является истиной.

Пример:
>>> x = 0
>>> while(x<=3):
... print(x)
... x += 1
...
0
1
2
3


Также, в Python существует вид цикла " for ", в котором переменной будут присваиваться (по очереди) все значения из списка.

Пример, в котором в роли списка - строка❤️:
>>> x = "Привет"
>>> for char in x:
... print(char)
...
П
р
и
в
е
т


Пример с циклом, который повторяется n-раз:
>>> for x in range(4):
... print(x)
...
0
1
2
3



На этом предлагаю остановиться. Продолжение в следующем посте 🤫.


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
13137311
И снова наш любимый Python 😭 — предлагаю начать с основ и коснуться переменных и операций над числами.


Начнем с того, что любая программа состоит из набора команд и данных. В итоге, для того, чтобы можно было хранить эти самые данные, в Python есть такое понятие как переменные .

Если говорить простым языком, то переменная — это имя, с помощью которого можно обратиться к данным, сохраненным в памяти компьютера.
Если говорить более душно ☹️, то переменная — это именованная область в оперативной памяти компьютера, к которой мы можем обращаться неоднократно, с целью извлечь данные.


Синтаксис объявления переменной можно упаковать в следующую "формулу":

"Наименование переменной" + "=" + "Значение переменной"


Вот пару примеров того, как объявляется (создается 😎) переменная:

first = "синий"
second = 23


Естественно, что у разных переменных могут быть разные типы данных. В примере выше:
• переменная "first" является строкой;
• переменная "second" является числом.


Самое простое, что можно сделать с переменной, это вывести на экран ее значение. Для этого добавим одну строчку к нашему коду 1️⃣.

first = "синий"
second = 23
print(first, second)


Если запустить такую программу в каком-нибудь онлайн компиляторе или, например, в Jupyter Notebook (как это сделал я 😮‍💨) — нам будет выведено:

синий 23


Теперь опишем несколько правил, которых следует придерживаться при выборе имен переменных 👇:

1. Имя переменной может содержать только латинские буквы, числа и символ нижнего подчеркивания.

2. Имя переменной не должно содержать пробелов.

3. Имя переменной не должно начинаться с цифры.

4. Регистр важен (first и First это разные переменные).

5. Учитывайте, что некоторые наименования могут быть зарезервированы (это ключевые слова, например: "False, True, for, while и т.д." и наименования встроенных функций, например: "abs(), bool(), и т.д.").


Теперь напишем про операции над числами. Кайф заключается в том, что в Python встроены все нужные операторы для арифметических действий, а их использование очень похоже на математические записи, которые, используются в повседневной жизни ❤️.

Рассмотрим пример:

a = 10 + 5
b = a + 20
c = (a + b) * 2
print(a, b, c)


После запуска такой программы нам будет выведен текст:

15 35 100


Предлагаю разобраться поподробнее 🫡:

1. В первой строке переменной "a" будет присвоено значение суммы чисел 10 и 5.

2. Во второй строке мы складываем значение переменной "a" и число 20. В итоге в переменную "b" будет записано число 35.

3. Приоритеты операторов в Python точно такие же, как в обычной математике, а порядок выполнения можно изменить с использованием скобок. Это происходит в третьей строке программы.


В завершении опишем арифметические операторы, которые можно использовать в Python (10 + 5 = 15, где "10" и "5" это операнды, а "+" это оператор) ✍️:

• " + " (Добавление) - добавляет левый операнд к правому. Пример: "a + b = 15", где a = 10, b = 5;

• " - " (Вычитание) - вычитает правый операнд из левого. Пример: "a - b = 5";

• " * " (Умножение) - умножает левый операнд на правый. Пример: "a * b = 50";

• " / " (Деление) - делит левый операнд на правый. Пример: "a / b = 2";

• " % " (Деление по модулю) - делит левый операнд на правый и возвращает остаток. Пример: "a % b = 0";

• " ** " (Возведение в степень) - возводит левый операнд в степень, которая равна правому операнду. Пример: "a ** b = 100000";

• " // " (Целочисленное деление) - деление в котором возвращается только целая часть результата, а часть после запятой отбрасывается. Пример: "9 // 2 = 4".



#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
115443321
Продолжим серию постов про Python 🍎. Предлагаю разобрать строки 🌈.


Строка — это тип данных, который нужен для работы с текстом. Для того, чтобы создать строку в Python, нужно "обернуть" значение переменной в одинарные (') или двойные кавычки ("). Если нужно использовать большое количество текста, который занимает несколько строк, в рамках одной переменной, можно "оборачивать" этот текст в тройные кавычки (''' или """) 😄. Приведем пример:

a = 'Привет, друг!'
b = "Как дела?"
c = """очень-очень-очень
длинный текст, который
занимает несколько строк"""

print(a)
print(b)
print(c)


Если запустить код, который описан выше, будет выведено следующее 😎:

Привет, друг!
Как дела?
очень-очень-очень
длинный текст, который
занимает несколько строк



Помимо создания строк в исходном коде (описано выше 👆), можно получать строку от пользователя с помощью функции "input()". Предлагаю сразу разобрать пример:

name = input('Введите свое имя: ')
surname = input('Введите свою фамилию: ')
privetstvie = "Привет, " + name + " " + surname
print(privetstvie)


При запуске такой программы пользователь получит приглашение ввести свое имя, а затем фамилию. Как только это будет сделано, в переменную name будет записано имя, которое он ввел, а в переменную surname будет записана фамилия, которую он ввел 1️⃣.

В третьей строке программы есть оператор " + ", про который можно почитать в предыдущем посте. В данном случае, с его помощью несколько строк склеиваются в одну (этот процесс также можно называть "конкатенацией строк").

Четвертая строка выведет целое приветствие на экран 👋. То есть, если пользователь введет имя "Андрей", а затем фамилию "Разыграев" (все совпадения случайны ☹️), то будет выведено следующее:

Привет, Андрей Разыграев



Также стоит отметить, что строки могут быть пустыми, то есть не иметь внутри себя ни одного символа.
Пробел – это такой же символ, как и все остальные, поэтому две строки ниже не равны между собой:

• a = "" (Это пустая строка ☔️)

• b = " " (Это строка, которая состоит из одного пробела 💪)



Ну и напоследок, предлагаю разобрать простую, но очень полезную встроенную функцию, с помощью которой можно узнать длину строки ❤️. Это функция:

• len() – возвращает количество символов строки


Сразу приведем пример использования этой функции:

stroka = input('Введите любой текст: ')
a = len(stroka)
print(a)


Допустим, что после запуска программы, пользователь ввел следующий текст "Интересно, какое количество символов в этой строке?" 👍. Тогда, после выполнения программы будет выведено:

51



#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
1086221
Предлагаю разобрать некоторые полезные методы, которые направлены на наши "любимые" строки. Поехали 🍿.


Методы, с помощью которых можно манипулировать (да, именно так 😄) строками, похожи на функции. Их тоже можно вызывать и, так же как и функции, они могут возвращать результат своей работы. Отличаются эти методы тем, что они привязаны к определенному типу данных. Это означает, что, например, методы строк могут быть вызваны только у строк 🙄.

Чтобы не ходить вокруг да около, сразу приведем несколько примеров того, как вызывать эти самые методы строк и безжалостно их использовать ☹️. Напишем, а затем запустим код ниже:

stroka = "Ничего сложного :)"
print(stroka.lower())
print(stroka.upper())


Вывод после запуска кода будет таким:

ничего сложного :)
НИЧЕГО СЛОЖНОГО :)


То есть метод " .lower() " возвращает строку, в которой все символы находятся в нижнем регистре.
А метод " .upper() ", соответственно, возвращает строку, в которой все символы находятся в верхнем регистре. В параметрах методов (то, что в скобках, после названия метода 😏) ничего указывать не нужно.


Также, очень ! важно ! помнить, что методы не меняют исходную строку. Строки в Python вообще нельзя изменить 🍔. И что тогда делать? Ответ таков: нужно присвоить строке новое значение 1️⃣, пример ниже.

stroka = "Ничего сложного :)"
stroka = stroka.upper()
print(stroka)


Вывод программы выше будет таким:

НИЧЕГО СЛОЖНОГО :)


Но если мы потом, после компиляции кода выше, будем использовать значение переменной " stroka ", то оно будет равно именно "НИЧЕГО СЛОЖНОГО :)", а не "Ничего сложного :)". Вот такой вот нюанс 🍎!


Теперь рассмотрим самое интересное, но немного душное: индексы строк.

Бывает так, что иногда нужно выбирать отдельные символы из строки. В Python для этого необходимо использовать квадратные скобки: "[...]" 🗿. Ниже приведены примеры получения символа строки s, которая равна слову "Дружище".

Код:

s = "Дружище"
print(s[0])
print(s[1])
print(s[-1])
print(s[-2])


Вывод:

Д
р
е
щ


Видно, что " s[0] " — возвращает первый символ нашей строки, " s[1] " — возвращает второй символ, " s[-1] " — возвращает последний символ, " s[-2] " — возвращает предпоследний символ. Отсюда можем выделить пару несложных правил :

1. Нумерация индексов символов начинается с нуля;

2. Отрицательный индекс отсчитывает символы, начиная с конца строки.



После вышеописанного можем рассмотреть просто душное (шучу ☹️): cрезы строк.

Срез используется для выделения части строки. Он состоит из индекса и диапазона. Сразу рассмотрим несколько примеров со строкой c = "абвгдежзик".

Индексы символов строки "c":

0 1 2 3 4 5 6 7 8 9


Символы строки "c", соответственно:

а б в г д е ж з и к


Тогда, при запуске кода ниже:

c = "абвгдежзик"
print(c[2 : 5])
print(c[ : 5])
print(c[5 : ])
print(c[-2 : ])
print(c[: ])
print(c[1 : 7 : 2])
print(c[: : -1 ])


Вывод будет следующим:

вгд
абвгд
ежзик
ик
абвгдежзик
бге
кизжедгвба


Теперь разберем:

• В 1 строке — вывелись символы с индексами 2,3,4
• В 2 строке — вывелись первые пять символов
• В 3 строке — вывелись символы, начиная с 5 и до конца
• В 4 строке — вывелись два последних символа
• В 5 строке — вывелась вся строка
• В 6 строке — вывелись символы со второго по шестой, через один
• В 7 строке — вывелась стока наоборот (т.к. шагаем по одному символу с конца строки 💪)


Ну и теперь уже по-классике сформулируем из того, что выше несколько правил ❤️:

1. Структуру среза можно представить "формулой": наша_строка[начальный_символ : конечный_символ + 1 : шаг];

2. Срезы не включают явное расположение окончания строки. Например, в приведенном выше примере " c[2 : 5] ", выводятся символы с индексами 2, 3 и 4, но не символ с индексом 5;

3. Мы можем оставить, вместо индекса начала или окончания строки, пустоту (или пробел);

4. Используя отрицательные индексы, мы можем получать символы с конца строки.



#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
117411
Давайте сделаем небольшое отступление от Python и порассуждаем на тему спорта, дисциплины и зачем это вообще нужно 🤷‍♀️?


Начнем с очевидного, а именно - со спорта 🏋️‍♂️.

Спорт — это не просто физическая активность, это неотъемлемая часть здорового образа жизни (признайтесь, удивил? 😄). Регулярные тренировки приносят много полезного для организма и психического состояния, рассмотрим примеры ниже:

• Укрепляется сердечно-сосудистая система.
• Повышается общий иммунитет организма.
• Уходит лишний вес.
• Укрепляются кости и суставы.
• Повышается выносливость.
• Снижается уровень стресса и тревожности.
• Повышается настроения из-за выработки гормонов счастья (эндорфинов).



Ни для кого не секрет, что спорт дисциплинирует. Но как это происходит? (Сейчас капитан очевидность разберется 😎)

При регулярных занятиях возникает необходимость в:

1. Составлении тренировочного плана. Чтобы достичь своих целей, необходимо составить план тренировок и строго его придерживаться. Это учит планированию и целеустремленности .

2. Регулярности. Регулярные тренировки формируют привычку и помогают развивать силу воли 💪.

3. Преодолении трудностей. Во время тренировок всегда возникают трудности: усталость, боль, желание бросить все 😭. Преодолевая их, вы становитесь более стойким и уверенным в себе и своих силах.


Теперь, когда связь между спортом и дисциплиной явно определена, опишем почему дисциплина >> мотивации. ( >> - означает «много больше» 🍎)

Дисциплина часто оказывается более надежным спутником на пути к достижению целей, чем мотивация, так как:

Мотивация — это переменчивая спутница 🙌.

1. Нестабильность. Мотивация — это как ветер: то дует сильно, то стихает 🥶.

2. Краткосрочность. Мотивация часто основана на эмоциях и краткосрочных целях. Она может помочь начать что-то делать, но не всегда поддержит на протяжении длительного времени 😭.

3. Зависимость от внешних факторов. Мотивация часто зависит от внешних стимулов (похвала, награды). Если их нет, мотивация может ослабеть и сойти на нет 💔.


Дисциплина — это надежный фундамент
состоящий из таких «кирпичиков» как:

1. Постоянство.
Дисциплина — это привычка делать что-то регулярно, вне зависимости от вашего настроения или внешних факторов (плохая погода, темное время суток) 🤫.

2. Долгосрочность.
Дисциплина направлена на достижение долгосрочных целей. Она помогает следовать намеченному плану ❤️.

3. Независимость.

Дисциплина не зависит от внешних факторов. Она позволяет действовать даже тогда,когда мотивации нет ☹️.



В итоге, можно сделать вывод:

Дисциплина — это ключ к успеху. Она позволяет достигать поставленных целей, несмотря на препятствия и соблазны. Конечно, мотивация тоже играет важную роль, но дисциплина — это то, что помогает нам двигаться вперед даже тогда, когда мотивации нет 1️⃣.

Ну а развить эту самую дисциплину нам поможет спорт и регулярные тренировки. На мой взгляд, это самый простой способ ☕️.


#хинт 😮‍💨
Please open Telegram to view this post
VIEW IN TELEGRAM
158632
Давайте ненадолго вернемся к Python (базовые посты скоро закончатся, правда 😭) и разберем, что такое "Модули".

Если говорить простым языком, то это файлы, в которых содержатся определения функций, определяются значения некоторых переменных (например: число π, число Эйлера и т.д.).

Модули (или библиотеки) нужны для того, чтобы расширить возможности языка программирования и упростить написание программ. Думаю, что именно за это и любят Python ❤️.

Давайте разберем несколько интересных и полезных, на мой взгляд, модулей:

• Модуль "math" - очень помогает при работе с числами и с простыми математическими функциями (например: sin(x), cos(x) и т.д.).

• Модуль "time" - пригодится для работы со временем 😎.

• Модуль "random" - предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности ☕️.


И это только самая малая часть из того, что написано и встроено в Python. Обычно, увидев огромное количество этих самых модулей, глаза могут начать разбегаться и может возникнуть неприятное ощущение из-за того, что придется это все как-то учить 👊.

Однако, в этом нет надобности. К использованию модулей стоит прибегать по необходимости. Давайте сразу приведем простой словесный пример:

• Допустим, что вы работаете с какими-то сложными математическими вычислениями.

• Вы подключаете модуль со встроенной поддержкой требуемых операций (предварительно посмотрев информацию в гугле 🫡).

• После этого у вас отпадет необходимость придумывать то, что было уже придумано до вас. Можно сразу использовать ☹️.


Стоит также отметить, что сторонние модули могут быть написаны не только на языке Python, но и также на C и C++, а это дает существенный прирост в скорости работы таких модулей (уверен, что среди вас есть любители С и С++ 1️⃣).


Теперь добавим немного практики.

Для того, чтобы импортировать нужный модуль в нашу программу, а затем использовать его, необходимо воспользоваться командой "import".
Также, если нам нужно поменять стандартное имя модуля на кастомное, в рамках нашей программы - будем использовать "as". Формализуем вышесказанное 😄:

import наименование_модуля as кастомное_наименование_модуля



Ниже приведем пример программы, в которой импортируем модуль "math", выведем число π и посчитаем синус нуля:

import math as math_bot

print(math_bot.pi)
print(math_bot.sin(0))


Вывод программы выше будет следующим:

3.141592653589793
0.0


Давайте быстренько разберем написанный код:

• В первой строке импортируем модуль "math", называя его "math_bot" в рамках нашей программы .

• Во второй строке выводим значение, которое возвращает метод "pi" модуля "math" 👍.

• В третьей строке выводим значение, которое возвращает метод "sin()" модуля "math" (в метод sin() - передаем значение равное нулю) 💪.



Вторым примером напишем программу, которая будет выводить 5 случайных целых чисел от 1 до 100 с паузой в одну секунду. Для того, чтобы это сделать импортируем модули "time" и "random":

import time
import random

i = 0

while (i <= 4):
print(random.randint(1, 100))
i = i + 1
time.sleep(1)


Вывод программы будет каждый раз разным, например:

37
21
97
89
92


По классике бегло разберем написанный код нашего рандомайзера 😄:

Импортируем модули "time" и "random".

Задаем начальное значение счетчика, который остановит программу.

Задаем условие остановки цикла while (5 чисел вывели - останавливаемся) 👌.

• В теле цикла выполняем следующие действия: печатаем рандомное число от 0 до 100, увеличиваем наш счетчик на единицу, ждем одну секунду.



Вот такая ночная закидушка вам .


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
126632
Давайте сегодня поговорим про число e (число Эйлера) 💡.

Часто говорят, что это число носит статус "магической" константы в математике, но мне в голову приходит следующее: «е, бой» или «е, рок» 😄.

Ну а если серьезно, то число e является фундаментальной математической константой (одной из 🫡). Оно примерно равно:

2,71828182845904…


На первый взгляд кажется, что это просто набор каких-то цифр, но на самом деле это число обладает кучей интересных свойств и играет очень важную роль в различных областях математики, физики и экономики .


Кратко опишем свойства числа e:

Число e нельзя представить в виде обыкновенной дроби. Его десятичное представление бесконечно и непериодично.

Число e не является корнем никакого алгебраического уравнения с целыми коэффициентами.

Производная функции y = e^x равна e^x. Это свойство делает ее одной из самых важных функций в математическом анализе.


И расскажем про применение числа e:

Экспоненциальный рост и распад: описывает процессы с постоянной скоростью, такие как рост популяций или радиоактивный распад.

Финансовые расчеты: используется для вычисления сложных процентов (более подробно про них - ниже ).

Теория вероятностей: применяется в распределении Пуассона и нормальном распределении.

Компьютерные науки: Используется в функциях активации (привет нейросетям ☕️).



Давайте быстренько распишем: откуда все-таки взялось это число e 🤨?

Число e впервые появилось в связи с изучением сложного процента (это начисление процентов на начисленный ранее процент 🤯).

При непрерывном начислении процентов, сумма вклада растет экспоненциально, и именно число e описывает скорость этого роста.



Сходу разберем пример с этим сложным процентом:

Представим, что мы начисляем проценты не раз в год, а n раз в год 🤑. В этом случае, формула для расчета конечной суммы будет выглядеть следующим образом:

S = P * (1 + r/n)^(n*t)


где:

S - конечная сумма.
P - начальная сумма вклада.
r - процентная ставка (в десятичном виде, т.е. 16% = 0.16 ☕️).
n - количество капитализаций в год (капитализация - начисление процентов на вклад 🧐).
t - время в годах.


При бесконечно частой капитализации (n стремится к бесконечности), выражение:

(1 + r/n)^(n*t)


стремится к числу e^(r*t), при условии, что r - процентная ставка в десятичном виде, а t - количество лет. В итоге, получаем формулу:

S = P * e^(r*t)


Давайте подставим в нее реальные цифры: предположим, вы положили 1000 рублей под 16% годовых (капитализация происходит раз в год) с непрерывным начислением процентов. Через 5 лет ваша сумма составит 🌈:

S = 1000 * e^(0.16 * 5) ≈ 2225.54 рублей


Если положить 1000 рублей под обычный процент с аналогичными условиями, получим 👊:

S = P + P * r * t = 1000 + 1000 * 0,16 * 5 = 1800 рублей


В итоге, можем сделать вывод, что при непрерывном начислении проценты растут значительно быстрее, чем при обычном начислении 📞.


Вообще, про число е можно написать целую книгу, но делать этого конечно же не будем ☹️.


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
1610851
⌨️ Лайф: режим, мысли и выводы


Тут собраны лайф-посты про режим, восстановление, перегрузы, поездки, канал и личные выводы.


📁 Отдых и восстановление:

📎 Почему важно отдыхать и не корить себя за это
📎 Как не выгорать после работы
📎 Тишина как функция восстановления
📎 Ходьба, отдых и разгрузка головы


📁 Перегруз и откаты:

📎 Как я загнал себя в переутомление
📎 Неделя апатии: разобрал причины
📎 Болезнь и мысли на больничном
📎 Тяжело возвращаться после болезни


📁 Режим и дисциплина:

📎 Спорт и дисциплина: зачем это нужно
📎 Один по-настоящему здравый день
📎 Рабочее место и продуктивность
📎 Две недели налаживал режим


📁 Мысли и рефлексия:

📎 Свой контекст дороже безликого контента
📎 Прогресс: либо растёт, либо падает
📎 Доминанта: как утро задаёт весь день
📎 Рефлексия как рабочий инструмент
📎 Почему с возрастом время летит быстрее
📎 Перфекционизм: почему «ещё не идеально» мешает
📎 Чувство, когда закрыл давние проекты
📎 Зачем читать книги


📁 Поездки и лайф-апдейты:

📎 Работа, спорт, дача и аналитика
📎 Отпуск: Калуга, Тула и дорога на машине
📎 Последний день лета
📎 Долгожданный отпуск в Питере
📎 Поездка на машине в Минск


📁 Про канал:

📎 Куда я пропадал: про аспирантуру
📎 Как выбрать тему для поста
📎 Статистика канала за его первый год
📎 Как я оформляю посты


#навигация 📝
Please open Telegram to view this post
VIEW IN TELEGRAM
17743
Сегодня поговорим про списки в Python и про то, что с ними делать 📝


Давайте предположим, что вы составляете список гостей на ваш день рождения. Этот список постоянно меняется, например:

• Артем и Антон, в итоге, не смогут прийти 😭.

• Андрей планирует прийти с другом Ваней 1️⃣.


Для работы с такими данными из реального мира отлично подходят списки (кстати, это еще один встроенный тип данных в Python ☕️). Для того, чтобы создать или, как говорится, объявить список в Python можно использовать два способа:

# первый способ
spisok_1 = ['первый', 'второй','третий']

# второй способ
spisok_2 = list('первый')

print(spisok_1, '- первый способ')
print(spisok_2, '- второй способ')


Вывод программы будет следующим:

['первый', 'второй', 'третий'] - первый способ
['п', 'е', 'р', 'в', 'ы', 'й'] - второй способ


Стоит отметить, что функция "list()" из второго способа принимает один объект, который можно "разобрать" на элементы, и возвращает список из этих элементов 👨‍💻. Например, если передать в "list()" строку — получим список букв, из которых эта строка состоит. Передадим в "list()" множество — получим список элементов этого множества .


Теперь предлагаю вернутся к списку гостей на день рождения. Давайте его создадим (перечислим всех возможных гостей через запятую):

guests = ['Валера', 'Саша', 'Артем', 'Антон']


В списке выше четыре элемента: 'Валера', 'Саша', 'Артем', 'Антон' — которые хранятся внутри списка именно в таком порядке. Если вы не собираетесь менять порядок списка, 'Валера' (настало твое время 😄) всегда будет первым элементом, 'Саша' — вторым и т.д.

Мы помним, что Артем и Антон не смогут прийти, поэтому их нужно удалить из нашего списка 😫. Сделаем это с помощью метода ".remove()", который удаляет первое вхождение в список заданного элемента (это означает, что если бы в списке было два элемента 'Артем', то удален бы был только первый ☕️):

guests = ['Валера', 'Саша', 'Артем', 'Антон']
print(guests, '- до удаления')

guests.remove('Артем')
print(guests, '- убрали Артема')

guests.remove('Антон')
print(guests, '- убрали Антона')


После выполнения кода выше будет выведено:

['Валера', 'Саша', 'Артем', 'Антон'] - до удаления
['Валера', 'Саша', 'Антон'] - убрали Артема
['Валера', 'Саша'] - убрали Антона


Теперь нам нужно добавить в список двух гостей, а именно: Андрея и Ваню ✍️. Добавим новые элементы в конец списка с помощью метода ".append()":

guests = ['Валера', 'Саша']
print(guests, '- до добавления')

guests.append('Андрей')
print(guests, '- добавили Андрея')

guests.append('Ваня')
print(guests, '- добавили Ваню')


Вывод будет таким:

['Валера', 'Саша'] - до добавления
['Валера', 'Саша', 'Андрей'] - добавили Андрея
['Валера', 'Саша', 'Андрей', 'Ваня'] - добавили Ваню


Также, есть возможность не только удалять / добавлять элемент, но и изменить его значение на другое, опираясь на индекс элемента (индексация начинается с нуля 🫡). Сходу рассмотрим на примере:

guests = ['Валера', 'Саша', 'Андрей', 'Ваня']
print(guests, '- до изменения')

guests[2] = 'АНДРЮХА'
print(guests, '- после изменений')


Компилируем и получаем:

['Валера', 'Саша', 'Андрей', 'Ваня'] - до изменения
['Валера', 'Саша', 'АНДРЮХА', 'Ваня'] - после изменений



В итоге, можем заключить, что список — это "контейнер", который хранит объекты в определенном порядке. Также, важно отметить, что, в отличие от строк, методы списка меняют исходный список 🙄.

Однако у списков есть кое‑что общее со строками. И это доступ к элементу по индексу и срезы. Все это работает в списках точно так же, как и в строках ❤️. Сходу закинем пример:

guests = ['Валера', 'Саша', 'АНДРЮХА', 'Ваня']

print(guests[2])
print(guests[-1])
print(guests[:2])


И вывод:

АНДРЮХА
Ваня
['Валера', 'Саша']



На этом все 🍎


#статья 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
136551