Forwarded from Python/ django
В статье описаны такие структуры данных как:
— Массив (Array)
— Динамический массив (Dynamic array)
— Связный список (Linked list)
— Стек (Stack)
— Очередь (Queue)
— Множество (Set)
— Карта (Map)
— Двоичное дерево поиска (Binary search tree)
— Префиксное дерево (Trie)
— Граф (Graph)
Параллельно рассказывается про самые популярные алгоритмы и ещё много всего)
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Крутейшая подборка для Дата Саентиста. Лучшие бесплатные курсы, книга, разбор вопросов с собеседований, roadmap, полезные материалы по Python, Go, Linux и многое другое.
▪100 вопросов для подготовки к собесу Data Science
▪Видео
▪100 вопросов для подготовки к собесу Python
▪Вопросы Middle
▪Видео
▪Вливаемся в Data Science: подробный roadmap что и где изучать
▪Machine Learning инженер: что/где/как изучать, чтобы въехать
▪ Моя большая практическая шпаргалка SQL (SQLite) с готовыми запросами
▪ Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра
▪ Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы
▪40 Полезных инструментов Дата Саентиста
▪Go — 100 вопросов/заданий с собеседований
▪Видео
▪ Где изучать Linux в 2024. Бесплатные курсы, книги и ресурсы
▪Видео
▪ Бесплатные курсы для изучения искусственного интеллекта в 2024 году
▪NumPy: оттачивайте навыки Data Science на практике
▪Numpy полный бесплатный курс
▪Где изучать Python в 2024. Бесплатные курсы, книги и ресурсы
▪ Видео
▪Где искать работу Дата Саентисту в 2024 году
▪Ресурсы для поиска работы Python разработчикам
▪ Бесплатные курсы по большим языковым моделям для дата-сайентистов
@python_job_interview
▪100 вопросов для подготовки к собесу Data Science
▪Видео
▪100 вопросов для подготовки к собесу Python
▪Вопросы Middle
▪Видео
▪Вливаемся в Data Science: подробный roadmap что и где изучать
▪Machine Learning инженер: что/где/как изучать, чтобы въехать
▪ Моя большая практическая шпаргалка SQL (SQLite) с готовыми запросами
▪ Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра
▪ Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы
▪40 Полезных инструментов Дата Саентиста
▪Go — 100 вопросов/заданий с собеседований
▪Видео
▪ Где изучать Linux в 2024. Бесплатные курсы, книги и ресурсы
▪Видео
▪ Бесплатные курсы для изучения искусственного интеллекта в 2024 году
▪NumPy: оттачивайте навыки Data Science на практике
▪Numpy полный бесплатный курс
▪Где изучать Python в 2024. Бесплатные курсы, книги и ресурсы
▪ Видео
▪Где искать работу Дата Саентисту в 2024 году
▪Ресурсы для поиска работы Python разработчикам
▪ Бесплатные курсы по большим языковым моделям для дата-сайентистов
@python_job_interview
Подсчет узлов бинарного дерева
Сложность: Средняя
Условие задачи: Дан корень дерева, удовлетворяющего термину "полнота", надо посчитать количество узлов в дереве.
Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.
Необходимо разработать алгоритм с временной сложностью менее O(n).
Пример:
Ввод:
Вывод: 6
Объяснение: *во вложении
▪Подробнее про двоичное дерево
▪Решение
Пишите свое решение в комментариях👇
@python_job_interview
Сложность: Средняя
Условие задачи: Дан корень дерева, удовлетворяющего термину "полнота", надо посчитать количество узлов в дереве.
Полным дерево считается в случае, если на каждом уровне (возможно за исключением последнего) у каждого родителя имеется пара потомков.
Необходимо разработать алгоритм с временной сложностью менее O(n).
Пример:
Ввод:
root = [1,2,3,4,5,6]
Вывод: 6
Объяснение: *во вложении
▪Подробнее про двоичное дерево
▪Решение
Пишите свое решение в комментариях👇
@python_job_interview
🚀 Перестановки, зависящие от регистра символа
Сложность: Средняя
Условие задачи: Дана строка, содержащая как цифры, так и буквы. Необходимо вернуть всевозможные варианты перестановок строки, изменяя регистр букв.
Пример:
Ввод: s = "a1b2"
Вывод: ["a1b2","a1B2","A1b2","A1B2"]
Ввод: s = "3z4"
Вывод: ["3z4","3Z4"]
🔗 Решение
Пишите свое решение в комментариях👇
@python_job_interview
Сложность: Средняя
Условие задачи: Дана строка, содержащая как цифры, так и буквы. Необходимо вернуть всевозможные варианты перестановок строки, изменяя регистр букв.
Пример:
Ввод: s = "a1b2"
Вывод: ["a1b2","a1B2","A1b2","A1B2"]
Ввод: s = "3z4"
Вывод: ["3z4","3Z4"]
🔗 Решение
Пишите свое решение в комментариях👇
@python_job_interview
Сложность: Средняя
Условие задачи: Дано бинарное дерево, нужно перенести каждый указатель на следующий узел на соответствующий правый правый элемент на текущем уровне либо же передать указатель на NULL в случае отсутствия узла.
Пример:
Ввод:
root = [1,2,3,4,5,null,7
]Вывод:
[1,#,2,3,#,4,5,7,#]
📌 РешениеПишите свое решение в комментариях👇
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Вот некоторые обсуждаемые вещи:
• создание списков при помощи list comprehensions
• об использовании глобальных переменных
• генераторы,
yield
и вот это всё• функция
enumerate
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Затронута большая часть того, что пригодится в реальной работе, а именно:
— Создание словаря
— Длина словаря
— Доступ к элементам словаря
— Добавление элементов в словарь
— Изменение элементов в словаре
— Проверка ключей в словаре
— Удаление пары ключ-значение из словаря
— Преобразование словаря в список элементов
— Очистка словаря
— Удаление словаря
— Копирование словаря
— Получение ключей словаря в виде списка
— Получение значений словаря в виде списка
— Создайте пустой словарь с именем
dog
.— Добавьте в словарь
dog
ключи "name"
, "color"
, "breed"
, "legs"
и "age"
.— Создайте словарь
student
и добавьте ключи "first_name"
, "last_name"
, "gender"
, "age"
, "marital status"
, "skills"
, "country"
, "city"
и "address"
.— Получите длину словаря
student
.— Получите значение ключа
"skills"
и проверьте его тип данных, он должен быть списком.— Измените значения ключа
"skills"
, добавив одну или две навыка.— Получите ключи словаря в виде списка.
— Получите значения словаря в виде списка.
— Преобразуйте словарь в список кортежей с помощью метода
items()
.— Удалите один из элементов из словаря.
— Удалите один из словарей полностью.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Также в видео затрагиваются такие темы как:
— генераторы
— тернарный оператор
— множество
set()
— вложенные циклы
и много других, особенно актуальных для начинающих вещей
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
DRY - это принцип разработки, который означает "Don't Repeat Yourself" (не повторяйся). В контексте программирования, DRY означает, что любой фрагмент кода должен иметь только один источник истины, и он должен быть легко доступен и изменяем. Это уменьшает количество дублирующегося кода и упрощает процесс сопровождения и изменения кода.
Через ООП или ФП, можно применять принцип DRY следующим образом:
ООП: используйте наследование, полиморфизм и абстракцию для организации кода. Вынесите общие методы и свойства в родительские классы, а для каждого подкласса определите только те функции, которые отличают его от других.
ФП: используйте функции высшего порядка, замыкания и лямбда-выражения. Выносите общие функции в модули или библиотеки, и переиспользуйте их при необходимости.
Вот пример того, как ООП можно использовать для применения принципов DRY:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"My name is {self.name} and I am {self.age} years old.")
class Student(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
def introduce(self):
super().introduce()
print(f"I am majoring in {self.major}.")
class Teacher(Person):
def __init__(self, name, age, department):
super().__init__(name, age)
self.department = department
def introduce(self):
super().introduce()
print(f"I teach in the {self.department} department.")
Класс Person содержит общие атрибуты и поведение для всех людей в системе. Классы Student и Teacher наследуют от Person и добавляют свои определенные атрибуты и поведение. Таким образом, мы избегаем дублирования кода таких атрибутов, как имя и возраст, или таких методов, как внедрение.
Используя ООП и наследование, мы можем эффективно применять принципы DRY и сделать код более удобным в сопровождении и расширяемым. Точно так же вы можете использовать функции и композицию более высокого порядка в FP для достижения тех же целей.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Множественное наследование - это когда класс наследуется от нескольких базовых классов. Это означает, что класс-потомок получает свойства и методы от всех своих базовых классов.
Пример использования множественного наследования в Python:
class A:
def method_a(self):
print("Method A")
class B:
def method_b(self):
print("Method B")
class C(A, B):
def method_c(self):
print("Method C")
obj_c = C()
obj_c.method_a() # Output: Method A
obj_c.method_b() # Output: Method B
obj_c.method_c() # Output: Method C
В этом примере классы A и B являются базовыми классами для класса C. Класс C получает свойства и методы от классов A и B, и может использовать их в своих собственных методах.
Множественное наследование может быть полезно, когда вам нужно использовать свойства и методы из разных классов, чтобы создать новый класс с уникальным поведением. Однако, когда используется множественное наследование, может возникать проблема "алмазного наследования", когда два базовых класса оба имеют одноименный метод, что может привести к неоднозначности и ошибкам в коде.
Если такая проблема возникает, то рекомендуется пользоваться композицией вместо множественного наследования.
Композиция - это когда вы создаете класс, включающий в себя другие классы в качестве своих атрибутов. Для примера, класс может иметь атрибут объекта класса вместо наследования от этого класса.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM