Извлечение данных из вложенных структур Зачастую приводит к созданию перегруженного кода, который подвержен ошибкам.
в Python 3.10 pattern matching (Сопоставление с образцом ) обеспечивает более декларативный и понятный способ обработки сложных структур данных.
#Python #pythontips
@pythonl
в Python 3.10 pattern matching (Сопоставление с образцом ) обеспечивает более декларативный и понятный способ обработки сложных структур данных.
#Python #pythontips
@pythonl
👍18❤5🔥3
🐍 Python-совет: как объединить списки разной длины и не потерять данные
Обычный zip() останавливается на самом коротком списке:
Элементы 4 и 5 просто исчезнут. Чтобы сохранить их, используйте zip_longest():
Результат:
А когда списки обязаны иметь одинаковую длину, в Python 3.10+ лучше включить проверку:
Вместо тихой потери данных Python сразу выбросит ValueError.
Полезно при обработке таблиц, CSV, результатов API и параллельных наборов данных.
#Python #Programming #PythonTips
Обычный zip() останавливается на самом коротком списке:
numbers = [1, 2, 3, 4, 5]
letters = ["a", "b", "c"]
print(list(zip(numbers, letters)))
# [(1, 'a'), (2, 'b'), (3, 'c')]
Элементы 4 и 5 просто исчезнут. Чтобы сохранить их, используйте zip_longest():
from itertools import zip_longest
result = zip_longest(
numbers,
letters,
fillvalue="нет значения",
)
print(list(result))
Результат:
[
(1, "a"),
(2, "b"),
(3, "c"),
(4, "нет значения"),
(5, "нет значения"),
]
А когда списки обязаны иметь одинаковую длину, в Python 3.10+ лучше включить проверку:
zip(numbers, letters, strict=True)
Вместо тихой потери данных Python сразу выбросит ValueError.
Полезно при обработке таблиц, CSV, результатов API и параллельных наборов данных.
#Python #Programming #PythonTips
🔥8❤6👍5🎉1
🐍 В Python у
Выглядит непривычно:
Блок
Но есть важный нюанс. Если внутри сработает
Из-за этого
Например, цикл пытается найти нужное значение. Если нашёл, делает
Синтаксис существует в Python давно, но до сих пор выглядит как маленькая пасхалка языка.
#Python #Programming #Backend #PythonTips
while есть else. И многие разработчики узнают об этом спустя годыВыглядит непривычно:
number = 0
while number < 5:
print(number)
number += 1
else:
print("Цикл завершился")
Блок
else выполнится, если цикл закончился естественно, то есть условие while стало ложным.Но есть важный нюанс. Если внутри сработает
break, else уже не выполнится.
number = 0
while number < 5:
if number == 3:
break
number += 1
else:
print("Сюда не попадём")
Из-за этого
while...else удобно использовать там, где нужно отличить нормальное завершение поиска от досрочного выхода.Например, цикл пытается найти нужное значение. Если нашёл, делает
break. Если дошёл до конца без успеха, срабатывает else.Синтаксис существует в Python давно, но до сих пор выглядит как маленькая пасхалка языка.
#Python #Programming #Backend #PythonTips
❤3👍1🔥1😱1