TGViewer
Channel Public Channel
Python: задачки и вопросы

Python: задачки и вопросы

@quiz_python

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Subscribers
6.91K
Photos
1.4K
Videos
1
Links
126

Showing posts older than #3623 · Back to latest

Older Posts 20 shown
Post #3621 1.25K
#размяться
Post #3620 1.32K
Списковые включения

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

[ выражение for цель in итерируемый_объект ]


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

[ выражение for цель1 in итерируемый_объект1 if условие1
for цель2 in итерируемый_объект2 if условие2 . . .
for цельN in итерируемый_объектN if условиеN ]


Когда конструкции for вкладываются внутри спискового включения, они работают подобно эквивалентным вложенным операторам цикла for:

res = [х + у for х in [0, 1, 2] for у in [100, 200, 300]]
res # [100, 200, 300, 101, 201, 301, 102, 202, 302]


Эффект будет таким же, как у показанного ниже существенно более многословного
эквивалента:

res = []
for x in [0, 1, 2]:
for у in [100, 200, 300]:
res.append(x + y)

print(res) # [100, 200, 300, 101, 201, 301, 102, 202, 302]
Post #3618 1.25K
#размяться
Post #3617 1.32K
Встроенная функция ord() в Python возвращает целочисленную кодовую точку
одиночного символа:

ord('s') # 115


mар() передает каждый элемент итерируемого объекта некой функции и собирает все результаты. Однако при передаче функции в качестве аргумента map() скобки опускаются, потому код выше вызовет ошибку:

Ниже приведен пример верного синтаксиса:
counters = [1, 2, 3, 4]
def inc(x): return х + 10 # Прибавим каждому элементу 10
list(map(inc, counters)) # [11, 12, 13, 14]
Post #3615 1.19K
#ловушка
Post #3613 1.36K
functools.reduce(функция, итерируемый_объект, [исходное_значение, ]/)


reduce()
применяет функцию к итерируемому_объекту, и возвращает одиночный результат. Она разрешает также передавать необязательный третий аргумент исходное_значение, который фактически помещается перед элементами последовательности и служит начальным значением, а также стандартным результатом, когда последовательность пуста.

from functools import reduce

# Суммируем элементы списка
reduce((lambda x, у: х + у) , [1, 2, 3, 4]) # 10

но

from functools import reduce

reduce((lambda x, у: х + у) , [1, 2, 3, 4], 1) # 11
Post #3611 1.3K
#ловушка
Post #3610 1.34K
— Функция pow(x, y) возвращает x, возведённое в степень y.

— map(function, iterable1, iterable2) применяет заданную функцию (в данном случае pow()) к элементам двух (или более) итерируемых объектов (в данном случае списков [1, 2, 3] и [2, 3, 4]).

map(pow, [1, 2, 3], [2, 3, 4]) выполнит следующее:

1. pow(1, 2) возвращает 1^2 = 1
2. pow(2, 3) возвращает 2^3 = 8
3. pow(3, 4) возвращает 3^4 = 81.

Затем, когда мы оборачиваем это в list(), то получаем полный список:

>>> list(map(pow, [1, 2, 3], [2, 3, 4])) # 1 ** 2, 2 ** 3, 3 ** 4
... [1, 8, 81]
Post #3608 1.33K
#размяться
Post #3607 1.37K
Вы можете использовать словари и другие структуры данных в Python для построения более универсальных разновидностей таблиц действий. Вот пример:

key = 'got'
{'already': (lambda: 2 + 2), 'got': (lambda: 2 * 4), 'one': (lambda: 2 ** 6)}[key]()

Когда Python создает временный словарь, каждое вложенное выражение lambda генерирует и оставляет после себя функцию, подлежащую вызову в будущем. Индексация по ключу извлекает одну из функций, а круглые скобки приводят к вызову извлеченной функции. При такой реализации словарь становится более универсальным инструментом для множественного ветвления, нежели оператор if.
Post #3605 1.22K
#размяться
Post #3604 1.23K
Общая форма лямбда-функций выглядит как ключевое слово lambda, за которым следует один или больше аргументов (очень похоже на список аргументов, заключенный в круглые скобки в заголовке def) и далее выражение после двоеточия:
lambda аргумент!, аргумент2, . . . аргументы : выражение , использующее аргументы


Как и в случае def, для аргументов lambda можно указывать стандартные значения:
x = (lambda a="fee", b="fie", c="foe": a + b + c)
print(x("wee")) # weefiefoe
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →