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

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

@quiz_python

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

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

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

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

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

Showing posts older than #3725 · Back to latest

Older Posts 20 shown
Post #3724 1.17K
X = 99

def selector(): # Имя X используется, но не присваивается
print(X) # Имя X найдено в глобальной области видимости

selector()
Post #3722 1.19K
#ловушка
Post #3721 4.28K
— 'spam' * 3 генерирует строку 'spamspamspam', которая состоит из трех повторений строки 'spam';
— используется генератор списка [], который обходит каждый символ строки 'spamspamspam';
— Функция f(x) просто возвращает переданное ей значение x без изменений.
  • ❤ 1
Post #3719 4.48K
#размяться
Post #3718 1.2K
Из всех флагов только -s действительный:

-s S, --setup=S
statement to be executed once initially (default pass)


Для указания кода настройки в режиме командной строки применяется строка после флага —s (или несколько в случае многострочного кода настройки), а в режиме вызовов API-интерфейса — аргумент setup. В итоге тесты можно ориентировать более четко, например, выносить инициализацию списка выносится в код, чтобы измерять
время только итерации:


python3 -m timeit -n 1000 -r 3 -s "L = [1,2,3,4,5]" "M = [x + 1 for x in L]"


Подробнее в документации
Python documentation timeit — Measure execution time of small code snippets Source code: Lib/timeit.py This module provides a simple way to time small bits of Python code. It has both a Command-Line Interface as well as a callable one. It avoids a number of common traps fo...
Post #3716 1.22K
Модуль timeit позволяет измерить время исполнения кода.

В команде python3 -m timeit -n 1000 -r 3 "L = [1,2,3,4,5]" "M = [x + 1 for x in L]" используются несколько флагов, которые управляют поведением модуля:

-n 1000: флаг указывает количество повторений. Тестируемый код будет выполняться 1000 раз за каждую итерацию.

-r 3: флаг задает количество повторных запусков всего теста

Вывод у команды будет такой (проверено на Python 3.13.1):


1000 loops, best of 3: 111 nsec per loop
  • 👍 1
Post #3715 1.18K
#размяться
Post #3712 1.32K
map() — самый быстрый вариант, поскольку функция фактически работает на C. И это превышает скорости конкурентов. А кто в рейтинге взял серебро и бронзу?

Как видно, в каждой функции по 10 миллионов шагов функций — каждая строит список из 10 000 элементов 1000 раз.

Запустив сценарий в Python 3.7, мы получаем следующие результаты — map() быстрее списковых включений, они оба быстрее циклов for, а генераторные выражения и функции находятся посередине (время в секундах):


forLoop :: 2.34160
listComp : 1.31783
mapCall :: 0.41968
genExpr :: 1.92063
genFunc :: 1.93672


Генераторное выражение должно делать дополнительную работу по сохранению и
восстановлению своего состояния во время выпуска значений.
Post #3710 1.18K
#ловушка
Post #3709 1.25K
Модуль time позволяет замерить время исполнения кода. Вот пример функции с ее использованием:

import time

def timer(func, *args): # Упрощенная функция измерения времени
start = time.clock()
for i in range(1000):
func(*args)
return time.clock() - start # Суммарное истекшее время в секундах


Что делают остальные модули, можно посмотреть в полном списке в документации Python.
Post #3707 1.22K
На каждой итерации внутреннего цикла вам доступен элемент x из первого списка и элемент y из второго списка, и вы выполняете сложение этих двух значений: x + y.

Результат каждого сложения добавляется в множество a. Множество автоматически удаляет дубликаты.
Post #3705 1.25K
#ловушка
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 →