Продолжение базы....👋
💡 sep, end и \n — кастомим print() как хотим 😎
По умолчанию print() ставит пробел между аргументами и перевод строки в конце. Но мы можем это настроить через sep и end!
sep — разделитель между аргументами
По умолчанию sep=' ' (один пробел). Меняем на что угодно:
end — что ставить вместо перевода строки
По умолчанию end='\n' (новая строка). Можно поменять:
\n — символ новой строки
Это специальный символ для перевода строки внутри текста:
Комбо: всё вместе! 🔥
Мини тест:
Написать программу которая выводит:
#Python
По умолчанию print() ставит пробел между аргументами и перевод строки в конце. Но мы можем это настроить через sep и end!
sep — разделитель между аргументами
По умолчанию sep=' ' (один пробел). Меняем на что угодно:
print('яблоко', 'груша', 'слива', sep=', ')
# яблоко, груша, слива
print('1️⃣', '2️⃣', '3️⃣', sep=' ➤ ')
# 1️⃣ ➤ 2️⃣ ➤ 3️⃣end — что ставить вместо перевода строки
По умолчанию end='\n' (новая строка). Можно поменять:
print('Первая строка', end=' | ')
print('Вторая строка')
# Первая строка | Вторая строка\n — символ новой строки
Это специальный символ для перевода строки внутри текста:
print('Строка 1\nСтрока 2\nСтрока 3')
# Строка 1
# Строка 2
# Строка 3Комбо: всё вместе! 🔥
print('🅰️', '🅱️', '🅲️', sep=' ➤ ', end=' = готово!\n')
# 🅰️ ➤ 🅱️ ➤ 🅲️ = готово!# Таблица без кривых пробелов
print('Имя', 'Возраст', sep=' | ')
print('Анна', '25', sep=' | ')
print('Борис', '32', sep=' | ')
Мини тест:
Написать программу которая выводит:
⭐️ 1 ⭐️ 2 ⭐️ 3 ⭐️
#пиши в комментариях варианты 🤝
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1
Продолжение базы... ну и немного фишек:
💡 Мои любимые f-строки:
Подстановка переменных:
f-строки подставляют значения выражений из {} прямо в строку.
Выражения внутри {}:
Внутри {} можно писать любое Python-выражение.
Округление (фиксированная точность):
После : идёт формат-спецификатор (как в str.format).
Разделители разрядов:
Спецификатор , добавляет разделитель тысяч при форматировании чисел.
Проценты из доли:
Процентный вывод задаётся формат-спецификатором после : .
Выравнивание “табличкой”:
Ширина и выравнивание задаются в формате после :.
Динамическая ширина/точность (переменными):
В формат-спецификатор можно “вкладывать” вычисляемые поля ширины/точности.
Отладка “имя=значение” (Python 3.8+):
Запись {expr=} выводит и выражение, и его значение.
Показать repr (видны кавычки и \n):
Конверсия !r печатает repr() объекта в f-строке. про это кстати сегодня только узнал 😄)
делись вариантами в комментариях⤵️
#Python
⭐️ IMBA - Python,BIM,BI
Подстановка переменных:
name = "Аня"
city = "Москва"
print(f"{name} из {city}") # Аня из Москва
f-строки подставляют значения выражений из {} прямо в строку.
Выражения внутри {}:
price = 499
qty = 3
print(f"Сумма: {price * qty} ₽") # Сумма: 1497 ₽
Внутри {} можно писать любое Python-выражение.
Округление (фиксированная точность):
pi = 3.1415926
print(f"pi={pi:.2f}") # pi=3.14
После : идёт формат-спецификатор (как в str.format).
Разделители разрядов:
views = 1234567
print(f"Просмотры: {views:,}") # Просмотры: 1,234,567
Спецификатор , добавляет разделитель тысяч при форматировании чисел.
Проценты из доли:
done = 0.875
print(f"Готово: {done:.0%}") # Готово: 88%
Процентный вывод задаётся формат-спецификатором после : .
Выравнивание “табличкой”:
item = "яблоко"
qty = 12
print(f"{item:<10} | {qty:>5}") # яблоко | 12
Ширина и выравнивание задаются в формате после :.
Динамическая ширина/точность (переменными):
num = 12.34567
w = 8
d = 2
print(f"{num:{w}.{d}f}") # 12.35
В формат-спецификатор можно “вкладывать” вычисляемые поля ширины/точности.
Отладка “имя=значение” (Python 3.8+):
x = 100
y = 200
print(f"{x=}, {y=}, {x+y=}") # x=100, y=200, x+y=300
Запись {expr=} выводит и выражение, и его значение.
Показать repr (видны кавычки и \n):
text = "hi\n"
print(f"{text!r}") # 'hi\n'
Конверсия !r печатает repr() объекта в f-строке. про это кстати сегодня только узнал 😄)
💡Мини Тест:
Использовать f - строку при выводе из программы при помощи функции print():
name = "Egor"
age = "12"
Необходимо вывести:
Всем привет, меня зовут Егор, мне 12 лет и я люблю играть в хоккей.
делись вариантами в комментариях
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
продолжение базы...
💡 Сохраняй что бы на забыть ✍️
Задачка на ночь :
Какой тип данных выведет программа?
Ответы пишите в комментариях
⤵️
#Python
⭐️ t.me/BIM_PYTHON_BI
Задачка на ночь :
Какой тип данных выведет программа?
a = True + False / True
Ответы пишите в комментариях
#Python
⭐️ t.me/BIM_PYTHON_BI
Please open Telegram to view this post
VIEW IN TELEGRAM
Строки (str) — один из самых используемых типов данных в Python.Вот компактная шпаргалка с примерами 👇
1. Изменение регистра
s = "Hello, World!"
s.upper() # 'HELLO, WORLD!'
s.lower() # 'hello, world!'
s.capitalize() # 'Hello, world!'
s.title() # 'Hello, World!'
2. Поиск и проверка
s = "Hello, World!"
s.startswith("H") # True
s.endswith("!") # True
s.find("o") # 4
s.rfind("o") # 8
s.index("W") # 7
s.rindex("o") # 8
# find() → возвращает -1, если не найдено
# index() → выбрасывает ошибку
3. Замена и подсчёт
s = "Hello, World!"
s.replace("l", "x") # 'Hexxo, Worxd!'
s.replace("l", "x", 1) # 'Hexlo, World!'
s.count("l") # 3
4. Разделение строки
"one;two;three".split(";")
# ['one', 'two', 'three']
"Hello World".split()
# ['Hello', 'World']5. Очистка строки
" Hello ".strip()
# 'Hello'
"---Hello---".strip("-")
# 'Hello'
6. Форматирование
name = "Max"
age = 32
"Hi, {}!".format(name)
# 'Hi, Max!'
"Name: {n}, age: {a}".format(n=name, a=age)
# 'Name: Max, age: 32'
7. Длина строки
len("Hello, World!")
# 13Строки в Python — мощный инструмент для обработки данных, логов, CSV, BI и автоматизации.
#Python
⭐️t.me/BIM_PYTHON_BI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Тип данных list в Python — зачем он нужен
list — универсальный контейнер для хранения упорядоченных и изменяемых данных.
Используется в 90% реальных задач: данные из файлов, API, BIM-моделей и тд.
data = [1, 2, 3, 4] # Пример
Основные методы list - чекай на изображении
1. append()
Добавляет один элемент в конец списка
data.append(5)
# [1, 2, 3, 4, 5]
2. extend()
Добавляет несколько элементов
data.extend([6, 7])
# [1, 2, 3, 4, 5, 6, 7]
3. insert()
Вставляет элемент по индексу
data.insert(1, 99)
# [1, 99, 2, 3, 4, 5, 6, 7]
4. remove()
Удаляет первое совпадение по значению
data.remove(99)
# [1, 2, 3, 4, 5, 6, 7]
5. pop()
Удаляет и возвращает элемент
last = data.pop()
# last = 7
6. sort()
Сортирует список
data.sort()
7. reverse()
Разворачивает порядок элементов
data.reverse()
8. index()
Возвращает индекс элемента
data.index(3)
# 2
1. Хранит любые типы данных
2. Идеален для циклов, фильтрации, агрегаций
3. Основа для CSV, Excel, JSON, API, BIM-данных
Мне кажется один из самых популярных типов данных на практике в части данных.
Все - погнал спать
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Всеми не любимые словари - но Я с ними подружился (почти)
Тип данных Словарь (dict) — база для аналитики данных в стройке.
dict = “ключ
Почему это важно в аналитике: почти любая сводка = группировка по ключу (этаж/зона/подрядчик/тип/экземпляр) + накопление значений (кол-во/объем/стоимость/статус).
Ниже основные методы данного класса что бы не забыть:
1. get() — безопасно взять значение
elem = {"id": 101, "floor": "05", "status": "OK"}
status = elem.get("status", "UNKNOWN") # "OK"
phase = elem.get("phase", "WIP") # "WIP" (нет ключа)2. keys() — список “что вообще есть"
elem = {"id": 101, "floor": "05", "status": "OK"}
list(elem.keys()) # ["id", "floor", "status"]3. values() — только значения
elem = {"id": 101, "floor": "05", "status": "OK"}
list(elem.values()) # [101, "05", "OK"]4. items() — ключ+значение для обхода
elem = {"id": 101, "floor": "05", "status": "OK"}
for k, v in elem.items():
pass # лог/экспорт/проверка5. pop() — забрать и удалить по ключу
elem = {"id": 101, "temp": "x", "status": "OK"}
tmp = elem.pop("temp", None) # "x"6.popitem() — забрать “последнюю” пару
d = {"a": 1, "b": 2}
k, v = d.popitem() # ("b", 2)7. update() — обновить данные
elem = {"id": 101, "status": "WIP"}
elem.update({"status": "OK", "vol_m3": 12.4})8. clear() — очистить словарь
cache = {"floor05": 1200, "floor06": 980}
cache.clear()Полезно?❤️
#Python
⭐️t.me/BIM_PYTHON_BI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Основные методы ( рекомендую официальную документацию
Наглядный пример:
import pandas as pd
df = pd.read_csv("data.csv") # Загружаем CSV в DataFrame
print(df.head(3)) # Показываем первые 3 строки (быстрая проверка данных)
print(df.tail(3)) # Показываем последние 3 строки (контроль конца файла)
df.info() # Смотрим структуру: типы столбцов, пропуски, память
df = df.drop(columns=["trash"]) # Удаляем ненужный столбец
df = df.rename(columns={"old":"new"}) # Переименовываем столбец old в new
df["new"] = df["new"].fillna(0) # Заполняем пропуски в new нулями
report = df.groupby("category")["new"].sum() # Группируем по category и суммируем new
print(report) # Выводим итоговый отчёт
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1
from collections import Counter
c = Counter("ababaac") # Counter({'a': 4, 'b': 2, 'c': 1})
d = Counter("bccdd") # Counter({'c': 2, 'd': 2, 'b': 1})
Методы:
c.most_common(2) # [('a', 4), ('b', 2)]list(c.elements())[:7] # ['a','a','a','a','b','b','c']
c.update("bbb") # добавит +3 к 'b'
# c -> {'a': 4, 'b': 5, 'c': 1}c.subtract("ab") # вычтет 1 у 'a' и 'b'
# c -> {'a': 3, 'b': 4, 'c': 1}list(c.keys()) # ['a', 'b', 'c']
list(c.values()) # [3, 4, 1]
list(c.items()) # [('a', 3), ('b', 4), ('c', 1)]c.total() # 8 (сумма всех счетчиков)
c.clear() # очистит Counter
# c -> Counter()
c2 = d.copy() # независимая копия
c = Counter(a=3, b=1)
d = Counter(a=1, b=4, c=2)
c + d # Counter({'b': 5, 'a': 4, 'c': 2}) (складывает, отрицательные отбрасывает)
c - d # Counter({'a': 2}) (вычитает, <=0 отбрасывает)
c & d # Counter({'a': 1, 'b': 1}) (пересечение: min по каждому ключу)
c | d # Counter({'b': 4, 'a': 3, 'c': 2}) (объединение: max по каждому ключу)
Полезно?
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
🤝 всем привет!
После декораторов и рекурсии можно улететь на гнездо кукушки 🤪
Кто понял рекурсию тот понял рекурсию (с)
Пойду лучше 🍺 открою 😀
#Python
После декораторов и рекурсии можно улететь на гнездо кукушки 🤪
Кто понял рекурсию тот понял рекурсию (с)
Пойду лучше 🍺 открою 😀
#Python
👍2😁2
🔎Навигация для удобства поиска нужной информации на канале:
➡️ #BIM - Информация по BIM проектированию
🌐 #IFC - Информация по работе с IFC форматом
📉 #Аналитика - Информация по работе с BIM данными и не только
🥊#Спорт - Просто спорт видосы, досуг
🐍 #Python - Информация по Python
🤖#AIBIM - Интеграции Ai с BIM
👨🎓#TEST - Проверка знаний
👩🎓 #Курс - Курс по Power bi и аналитики BIM данных
🗞#НовостиЦифровизации
🥊#Спорт - Просто спорт видосы, досуг
🤖#AIBIM - Интеграции Ai с BIM
👨🎓#TEST - Проверка знаний
🗞#НовостиЦифровизации
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Всем привет 🤝
Одна из востребованных встроенных функций для работы с данными:
💡 isinstance() и ее самые удобные фишки:
1️⃣ Базовое применение:
2️⃣ Ключевое удобство - кортеж типов как второй аргумент🤔
Пример применения в функции:
#Python
⭐️t.me/BIM_PYTHON_BI
Одна из востребованных встроенных функций для работы с данными:
1️⃣ Базовое применение:
isinstance(x, int)
2️⃣ Ключевое удобство - кортеж типов как второй аргумент
isinstance(x, (int, float))
Пример применения в функции:
def del_spaces(x):
'''Удаляет пробелы по краям строки, числа возвращает без изменений'''
if isinstance(x, (int, float)):
return x
elif isinstance(x, str):
return x.strip()
else:
raise TypeError (f'Неверный тип данных {type(x)}')
#Python
⭐️t.me/BIM_PYTHON_BI
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что это?
Самая база:
. — любой символ | \d — цифра | \w — буква/цифра
^ начало | $ конец
* 0+ | + 1+ | ? 0/1
[ABC] выбор | [^ABC] исключение
( ) группа | | или
Необходимо заполнять наименование конкретной сущности проекта, пусть это будет "Стена гипсокартонная" в параметре ADSK_Наименование.
Шаблон регулярки для проверки:
^Стена\s+гипсокартон\w*$
Такой шаблон будет ловить гипсокартонная, гипсокартонные и т.д.
Вывод:
Регулярные выражения (Regex) это быстрый контроль качества BIM-данных без ручной проверки.
😃 Если у вас есть проблема и вы собираетесь ее решать с помощью регулярных выражений, тогда у вас уже две проблемы (c)
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Делал исключительно для практики стандартным функционалом python 💪
Можно красивее конечно допилить, но в целом работает))
Использовал:
Без ООП, только функциональное программирование
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1
BIM Cleaner, добавлено:
Даже UI получился не плохо 😏
Использовал модули:
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2
Media is too big
VIEW IN TELEGRAM
Если кто то выбирает учить язык программирования в эпоху ИИ, да, не знаю что за парень, но неоднократно натыкаюсь на похожее мнение.
Python все больше набирает обороты.
print(“Hello world!”)😀
#Python
Python все больше набирает обороты.
print(“Hello world!”)😀
#Python
Всем привет 🤝
Делюсь декомпозиций кода для лучшей читаемости разделяя на блоки.
Делать такие прикольные генераторы ASCII можно с помощью сервисов:
1. Text to ASCII Art Generator - мой любимый
2. ASCII Code Generator - лайт версия
Кстати, фрагмент кода собирает параметры типа и экземпляра в словарь, ключами которыми являются те или иные общие параметры, а так же их связь с категориями.
(немного поигрался с API).
#Python
Делюсь декомпозиций кода для лучшей читаемости разделяя на блоки.
#
# ▄▄ ▄▄ ▄▄ ▄▄▄▄ ▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄
# ██ ██▀▄▀██ ██▄█▀ ██▀██ ██▄█▄ ██
# ██ ██ ██ ██ ▀███▀ ██ ██ ██
#
import clr
clr.AddReference("RevitAPI")
from Autodesk.Revit import DB
from Autodesk.Revit.DB import FilteredElementCollector as FEC
from collections import defaultdict
from selections import get_category_by_id
#
# ▄▄ ▄▄ ▄▄▄ ▄▄ ▄▄ ▄▄
# ██▀▄▀██ ██▀██ ██ ███▄██
# ██ ██ ██▀██ ██ ██ ▀██
par_inst = defaultdict(list)
par_type = defaultdict(list)
bindings = doc.ParameterBindings
iterator = bindings.ForwardIterator()
iterator.Reset()
while iterator.MoveNext():
definition = iterator.Key
binding = iterator.Current
par_name = definition.Name
for category in binding.Categories:
if isinstance(binding, DB.InstanceBinding):
elements = get_category_by_id(doc,category, is_type=False)
par_inst[par_name].extend(elements)
elif isinstance(binding, DB.TypeBinding):
elements = get_category_by_id(doc,category, is_type=True)
par_type[par_name].extend(elements)
# ▄▄▄▄ ▄▄ ▄▄▄▄ ▄▄▄▄▄▄
# ██▀██ ██ ██▀▀▀ ██
# ████▀ ██ ▀████ ██
par_type.update(par_inst)
combined_dict = par_type
Делать такие прикольные генераторы ASCII можно с помощью сервисов:
1. Text to ASCII Art Generator - мой любимый
2. ASCII Code Generator - лайт версия
Кстати, фрагмент кода собирает параметры типа и экземпляра в словарь, ключами которыми являются те или иные общие параметры, а так же их связь с категориями.
(немного поигрался с API).
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Приветствую работяги 😃🤝
Захотелось немного разложить, какие парадигмы есть у #Python. Попробую максимально просто и понятно.
👩💻 Python — мультипарадигменный язык: в одной программе можно сочетать несколько подходов.
1️⃣ Процедурное программирование:
Программа строится как последовательность действий
и функций, работающих с данными.
Подходит для простых скриптов и небольших задач.
Пример: функция вычисляет площадь круга.
2️⃣ Объектно-ориентированное программирование (ООП):
Программа состоит из объектов, объединяющих
состояние и поведение.
Подходит для крупных, масштабируемых
и структурированных проектов.
Пример: объект Car хранит скорость и умеет ехать.
3️⃣ Функциональное программирование:
Логика строится на функциях, преобразовании данных
и минимизации изменений состояния.
Удобно для обработки коллекций и вычислений.
Пример: умножить все элементы списка на 2 через map()
4️⃣ Декларативное программирование:
Разработчик описывает, какой результат нужен,
а не пошаговый способ его получения.
Код обычно получается короче и выразительнее.
Пример: создать список квадратов чисел через
генератор списка.
💠 Главное отличие:
➡️ Процедурное — действия.
➡️ ООП — объекты.
➡️ Функциональное — функции и преобразования данных.
➡️ Декларативное — описание результата.
На практике хороший Python-код обычно сочетает все эти подходы.
#Python
Захотелось немного разложить, какие парадигмы есть у #Python. Попробую максимально просто и понятно.
Программа строится как последовательность действий
и функций, работающих с данными.
Подходит для простых скриптов и небольших задач.
Пример: функция вычисляет площадь круга.
Программа состоит из объектов, объединяющих
состояние и поведение.
Подходит для крупных, масштабируемых
и структурированных проектов.
Пример: объект Car хранит скорость и умеет ехать.
Логика строится на функциях, преобразовании данных
и минимизации изменений состояния.
Удобно для обработки коллекций и вычислений.
Пример: умножить все элементы списка на 2 через map()
Разработчик описывает, какой результат нужен,
а не пошаговый способ его получения.
Код обычно получается короче и выразительнее.
Пример: создать список квадратов чисел через
генератор списка.
На практике хороший Python-код обычно сочетает все эти подходы.
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет! 👋
Немного ООП (Объектно-ориентированное программирование), которое сейчас активно изучаю. Хочу поделиться простым примером на классе BimManager и разложить основные понятия по полочкам.
➡️ Класс — это шаблон (описание) будущих объектов.
➡️ Объект — конкретный экземпляр класса со своими данными.
➡️ Инициализатор
➡️ self — ссылка на текущий объект. Благодаря self каждый объект хранит свои атрибуты и может вызывать свои методы.
Например:
Создание экземпляра класса Менеджер Максим
После создания объекта:
➡️ Атрибуты описывают состояние объекта:
➡️ Методы описывают поведение объекта:
💡 Часто
❗ Почему это важно для BIM-специалистов?
Концепция ООП лежит в основе большинства BIM API. Например, в Revit API и Navisworks API практически всё представлено в виде объектов.
Например:
документ (
элемент (
помещение (
стена (
семейство (
3D-вид (
У каждого объекта есть атрибуты (свойства) и методы (действия). Поэтому понимание ООП значительно упрощает работу с API и помогает быстрее писать собственные инструменты автоматизации.
#Python
Немного ООП (Объектно-ориентированное программирование), которое сейчас активно изучаю. Хочу поделиться простым примером на классе BimManager и разложить основные понятия по полочкам.
class BimManager:
def __init__(self, name, age, company):
self.name = name
self.age = age
self.company = company
def code(self):
print("Пишу Python")
def meeting(self):
print("Участвую в совещании")
def sleep(self):
print("Сплю 😴")
__init__() автоматически вызывается при создании объекта. Его задача — задать объекту начальные значения атрибутов.Например:
Создание экземпляра класса Менеджер Максим
manager = BimManager("Максим", 32, "RM Engineering")После создания объекта:
self.name = "Максим"self.age = 32self.company = "RM Engineering"nameagecompanycode()meeting()sleep()__init__() называют конструктором, но точнее будет сказать, что это инициализатор. Сам объект создается методом __new__(), а __init__() лишь инициализирует уже созданный экземпляр.Концепция ООП лежит в основе большинства BIM API. Например, в Revit API и Navisworks API практически всё представлено в виде объектов.
Например:
документ (
Document);элемент (
Element);помещение (
Room);стена (
Wall);семейство (
Family);3D-вид (
View3D).У каждого объекта есть атрибуты (свойства) и методы (действия). Поэтому понимание ООП значительно упрощает работу с API и помогает быстрее писать собственные инструменты автоматизации.
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет! 👋
Немного про полезные функции👩💻 : lambda, map(), any(), all()
🔹 lambda — короткая анонимная функция.
🔹 map() — применяет функцию к каждому элементу.
🔹 any() — True, если хотя бы один элемент истинен.
🔹 all() — True, если все элементы истинны.
💡 Важно: map(), any() и all() принимают итерируемые объекты — например, экземпляры встроенных классов list, tuple, set, dict, str, а также генераторы.
С точки зрения ООП, list, tuple, set, dict и str — это классы, а конкретные списки, строки, словари и т.д. — их объекты (экземпляры).
📌 Итог:
lambda➡️ создать функцию
map()➡️ применить ко всем
any()➡️ хотя бы один
all()➡️ абсолютно все
#Python
Немного про полезные функции
🔹 lambda — короткая анонимная функция.
square = lambda x: x ** 2
square(5) # 25
🔹 map() — применяет функцию к каждому элементу.
list(map(lambda x: x * 2, [1, 2, 3]))
# [2, 4, 6]
🔹 any() — True, если хотя бы один элемент истинен.
any(x > 5 for x in [1, 3, 8])
# True
🔹 all() — True, если все элементы истинны.
all(x > 5 for x in [10, 20, 30])
# True
С точки зрения ООП, list, tuple, set, dict и str — это классы, а конкретные списки, строки, словари и т.д. — их объекты (экземпляры).
lambda
map()
any()
all()
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Всем привет!
👨💻 Работа со словарями нас окружает практически везде!
Иногда, чтобы не забывать основы, полезно освежить память.🥶
Как быстро подсчитать количество элементов по категориям, используя словарь?
💡 Разберём на простом примере: типы и размеры элементов Revit, сгруппированные по категориям.
Для решения используем Python и collections.Counter.
Из кода получаем:
Окна 2
Двери 2
Стены 2
Перекрытия 1
Несущие колонны 1
#Python
Иногда, чтобы не забывать основы, полезно освежить память.
Как быстро подсчитать количество элементов по категориям, используя словарь?
Для решения используем Python и collections.Counter.
Из кода получаем:
Окна 2
Двери 2
Стены 2
Перекрытия 1
Несущие колонны 1
#Python
Please open Telegram to view this post
VIEW IN TELEGRAM