itertools.chain
#tpyКогда у тебя есть несколько списков, кортежей или других итерируемых объектов, и нужно пройти по ним, будто это один большой список —
itertools.chain
делает это просто и эффективно, без создания дополнительных промежуточных структур.itertools.chain позволяет объединять итерируемые объекты "на лету", экономя память и ускоряя обработку больших наборов данных. Особенно полезно, когда работаешь с объемными файлами или потоками данных.
import itertools
list1 = [1, 2, 3]
list2 = ('a', 'b', 'c')
list3 = range(10, 13)
# Объединяем без создания новых списков
for item in itertools.chain(list1, list2, list3):
print(item, end=' ')
1 2 3 a b c 10 11 12
Теперь ты можешь обходить все эти коллекции как один поток, не тратя лишнюю память
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍11❤🔥2🔥2
enumerate()
в Python и почему это удобно? #tpyenumerate()
в Python - позволяет одновременно проходить по итерируемому объекту и получать индекс каждого элемента - очень удобно и читаемо.- Не нужно самостоятельно создавать счетчик
- Упрощает код при необходимости знать позицию элемента
- Особенно полезна при обработке списков, кортежей, строк и других итерируемых структур
fruits = ['яблоко', 'банан', 'киви']
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
0: яблоко
1: банан
2: киви
Теперь мы можем работать с циклами ещё удобнее!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥12❤3🔥3👍1
Это обычный способ создания списков через цикл
for
, но более лаконичный и читаемый.res = []
for i in range(10):
if i % 2 == 0:
res.append(i ** 2)
print(res) # [0, 4, 16, 36, 64]
res = [i ** 2 for i in range(10) if i % 2 == 0]
print(res) # [0, 4, 16, 36, 64]
[выражение for переменная in последовательность if условие]
«Добавь выражение в список для каждого элемента, если выполняется условие»
[x for x in range(1, 21) if x % 2 != 0]
[s.upper() for s in ['питон', 'егэ', 'код']]
[x for x in range(10) if x not in (3, 7)]
💭 Когда использовать?
💡 Важно: генераторы не заменяют циклы везде. Но для быстрого и чистого кода они очень полезны.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6❤🔥4 4🔥2
is
для сравнения строк и чисел в Python
? #tpy🔍 Для небольших чисел и коротких строк Python часто использует кэш, поэтому is может иногда возвращать True.
Но для больших чисел или длинных строк это не гарантировано - объекты могут быть разными.
a = 256
b = 256
print(a is b) # True (кэш)
x = "hello"
y = "hello"
print(x is y) # True (кэш)
a = 1000
b = 1000
print(a is b) # False (разные объекты)
==
для сравнения значений, is
- только чтобы проверить, ссылаются ли переменные на один объект!Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6❤3🔥3
.env
, и зачем он нужен? #tpyЕсли вы когда-либо работали с проектами на
Python
, Node.js
или других языках, то, скорее всего, сталкивались с файлами .env
. Но что они из себя представляют?В нем хранятся важные настройки: ключи API, пароли, настройки базы данных и другие конфиденциальные данные.
🔒 Почему это удобно?
- Безопасность: секретные данные не хранятся прямо в коде, их легко исключить из системы контроля версий.
- Гибкость: можно легко менять настройки между разными окружениями - тестовым, продакшеном и локальной разработкой.
- Удобство: все важные переменные сосредоточены в одном месте, их легко найти и обновить.
.env
- это безопасный способ хранения конфиденциальной информации, если он используется локально и не попадает в публичные источники.⚠️ Ведь его публичное размещение - серьёзная уязвимость!
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤4❤🔥2🔥2
Примеры кодов для задач 9, 17, 24, 26, 27 из ЕГЭ:
for M in open('9.txt'):
M = [int(i) for i in M.split()]
print(M)
M = [int(i) for i in open('17.txt')]
print(M)
s = open('24.txt').readline()
Считываем только первую строку файла.
ans = []
for M in open('26.txt'):
M = [int(i) for i in M.split()]
ans.append(M)
Сохраняем каждую строку как список чисел, а потом собираем всё в общий список.
f = open('27.А.txt').readlines()[1:]
for M in f:
M = [float(i.replace(',','.')) for i in M.split()]
x, y = M[0], M[1]
print(x, y)
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍6❤4🔥4❤🔥2
📎 list - это изменяемый упорядоченный список. Можно добавлять, удалять, менять элементы. Например:
fruits = ['яблоко', 'банан', 'апельсин']📎 📎 tuple - неизменяемая последовательность. Отлично подходит, когда нужно зафиксировать набор данных:
coordinates = (10, 20)📎 📎 set - множество уникальных элементов. Быстро искать, удалять дубликаты:
unique_numbers = {1, 2, 3}📎 📎 dict - словарь, отображение ключей на значения. Очень удобно для хранения пар "ключ-значение":
person = {'имя': 'Анна', 'возраст': 25}📎 ❄️ frozenset - неизменяемое множество, его нельзя менять после создания. Используется там, где нужен "жёсткий" набор данных. frozenset([1, 2, 3, 4])➡️ frozenset({1, 2, 3, 4})🔼 🔽 deque - двусторонняя очередь из модуля collections. Быстро добавлять и удалять элементы с обоих концов:
from collections import deque⚙️ d = deque() - инициализировать элементами из любого итерируемого объекта (список, кортеж и т. д.).
Технологии телеграмма не стоят на месте, поэтому обращаю ваше внимание, что мы часто используем инструмент "цитата". Кликайте на цитату выше, чтобы открыть текст для чтения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5❤🔥4🔥3
zip()
в Python? #tpyОна берет по одному элементу из каждого итерируемого объекта и создает кортеж из них.
names = ['Анна', 'Борис']
scores = [85, 90]
result = list(zip(names, scores))
print(result)
[('Анна', 85), ('Борис', 90)]
- Можно объединять любое количество итерируемых объектов.
- Если длины объектов отличаются,
zip()
остановится на минимальной длине.- параллельной обработки списков,
- создания словарей,
- объединения данных и многого другого.
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤🔥3 3🔥2
Python
можно посчитать Евклидово расстояние между двумя точками всего в одну строку?) #tpydist
, которая входит в стандартную библиотеку math
.В контексте 27 задачи ЕГЭ, особенно полезная вещь!!)
import math
point1 = (x1, y1)
point2 = (x2, y2)
distance = math.dist(point1, point2)
print(distance)
- Простая и удобная в использовании.
- Работает для точек в 2D, 3D и более измерениях.
⚠️ math.dist() доступна только в Python 3.8 и новее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤🔥3🔥2
- переменные, операторы, функции, базовые типы данных
- арифметика, логика, побитовые операции, приведение типов
-
if
, elif
, else
, вложенные условия, тернарный оператор-
for
, while
, вложенные циклы, break
, continue
, pass
, else
- операции, методы, форматирование (
f'
-строки, format()
, %
), срезы- методы, вложенные списки, особенности кортежей
- отличия от списков, методы, практика
- объявление, вызов,
return
- чтение, запись, практика
-
map()
, filter()
, zip()
, enumerate()
-
itertools
, math
, random
, ipaddress
, fnmatch
и др.- Обработка исключений, декораторы, алгоритмы (DBSCAN, K-means, Евклид), lambda-функции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4❤2🔥2
range(10**9)
почти не занимает памяти? #tpyrange()
хранит только начальное, конечное значения и шаг. Он не создает список всех чисел сразу, а генерирует числа по мере необходимости!
range(10**9)
в памяти хранится лишь небольшая информация: - старт (по умолчанию 0)
- финиш (10^9)
- шаг (по умолчанию 1)
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤8👍2🔥2
Python
! #tpy
🆘 # (... может каких то еще, вроде ток эти две )
🆘
1️⃣ upper() - переводит строку в верхний регистр.
"hello".upper() → "HELLO"2️⃣ lower() - переводит строку в нижний регистр.
"HELLO".lower() → "hello"3️⃣ capitalize() - делает первую букву заглавной.
"hello".capitalize() → "Hello"4️⃣ title() - каждое слово с заглавной буквы.
"hello world".title() → "Hello World"5️⃣ strip() - удаляет пробелы с обоих концов.
"hello".strip() → "hello"6️⃣ lstrip() / rstrip() - удаляет пробелы слева/справа.7️⃣ replace(old, new) - заменяет подстроку.
"abc".replace("a", "x") → "xbc"8️⃣ split(sep) - разбивает строку по разделителю.
"a,b,c".split(",") → ["a", "b", "c"]0⃣ join(list) - собирает строку из списка.
",".join(["a", "b", "c"]) → "a,b,c"🔟 startswith(str) / endswith(str) - проверяет начало/конец строки.
"hello".startswith("he") → True1️⃣ 1️⃣ find(sub) - ищет подстроку и возвращает индекс.
"hello".find("ll") → 21️⃣ 2️⃣ count(sub) - считает количество вхождений.
"hello".count("l") → 21️⃣ 3️⃣ isdigit() - проверяет, состоит ли строка из цифр.
"123".isdigit() → True1️⃣ 4️⃣ isalpha() - проверяет, только ли буквы.
"abc".isalpha() → True1️⃣ 5️⃣ isalnum() - буквы или цифры без пробелов.
"a1".isalnum() → True1️⃣ 6️⃣ islower() / isupper() - проверяет регистр.1️⃣ 7️⃣ zfill(width) - дополняет нулями слева.
"7".zfill(3) → "007"1️⃣ 8️⃣ format() - подставляет значения в строку.
"{}".format(5) → "5"1️⃣ 0⃣ f-строки (Python 3.6+) - удобный формат.
f"{5}" → "5"2️⃣ 0️⃣ in – проверка наличия подстроки.
"a" in "abc" → True
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥1
.index()
в Python
#tpyВы когда-нибудь сталкивались с задачей - найти позицию элемента в списке или строке? Тогда метод
.index()
- то что вам нужно).index()
? fruits = ['киви', 'банан', 'груша', 'банан', 'виноград']
pos = fruits.index('банан')
print(pos) # Выведет: 1
-
.index()
ищет 'банан'
и возвращает его первую позицию - 1
⚠️ Важно: если элемента в последовательности нет - .index() вызовет ошибку ValueError.
Чтобы избежать этого, можно воспользоваться оператором in для проверки, на наличие элемента.🔥 Совет:
Для поиска всех вхождений элемента — используйте цикл или генератор, а .index() отлично подходит для быстрого определения первой позиции.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥4👍1🔥1