for Y in range(5): pass # Операторы циклов имена не локализуют
Генератор выражений:
2.
В Python множество (set) не гарантирует порядок элементов, и при каждом запуске программы в разных версиях языка он будет отличаться.
x * x for x in range(10)
вычисляет квадрат числа x
для каждого числа x
в диапазоне от 0 до 9 (то есть от 0 до 9 включительно).2.
set
: Функция set()
берет все значения, производимые генератором, и добавляет их в множество. Итак, в результате формируется множество, содержащее значения: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
В Python множество (set) не гарантирует порядок элементов, и при каждом запуске программы в разных версиях языка он будет отличаться.
Что выведет код?
Anonymous Quiz
65%
{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
18%
{0, 4, 16, 36, 64}
14%
{'0': 0, '2': 4, '4': 16, '6': 36, '8': 64}
3%
Error
x * x for x in range(10)
вычисляет квадрат числа x для каждого четного числа x в диапазоне от 0 до 9 (то есть 0, 2, 4, 6, 8
).Фигурные скобки и
x:
обозначают генерацию словаря, где в качестве ключа будет выступать исходный четный x (то есть числа 0, 2, 4, 6, 8
).Ключи словаря тоже не упорядочиваются, потому в разных версиях интерпретаторов мы будем получать разный порядок ключей.
На каждой итерации внутреннего цикла вам доступен элемент
Результат каждого сложения добавляется в множество
x
из первого списка и элемент y
из второго списка, и вы выполняете сложение этих двух значений: x + y
.Результат каждого сложения добавляется в множество
a
. Множество автоматически удаляет дубликаты.Какой встроенный модуль позволяет замерить время исполнения кода?
Anonymous Quiz
9%
statistics
23%
datetime
59%
time
9%
Никакой из вышеперечисленных
Модуль time позволяет замерить время исполнения кода. Вот пример функции с ее использованием:
Что делают остальные модули, можно посмотреть в полном списке в документации Python.
import time
def timer(func, *args): # Упрощенная функция измерения времени
start = time.clock()
for i in range(1000):
func(*args)
return time.clock() - start # Суммарное истекшее время в секундах
Что делают остальные модули, можно посмотреть в полном списке в документации Python.
map() — самый быстрый вариант, поскольку функция фактически работает на C. И это превышает скорости конкурентов. А кто в рейтинге взял серебро и бронзу?
Как видно, в каждой функции по 10 миллионов шагов функций — каждая строит список из 10 000 элементов 1000 раз.
Запустив сценарий в Python 3.7, мы получаем следующие результаты — map() быстрее списковых включений, они оба быстрее циклов for, а генераторные выражения и функции находятся посередине (время в секундах):
Генераторное выражение должно делать дополнительную работу по сохранению и
восстановлению своего состояния во время выпуска значений.
Как видно, в каждой функции по 10 миллионов шагов функций — каждая строит список из 10 000 элементов 1000 раз.
Запустив сценарий в Python 3.7, мы получаем следующие результаты — map() быстрее списковых включений, они оба быстрее циклов for, а генераторные выражения и функции находятся посередине (время в секундах):
forLoop :: 2.34160
listComp : 1.31783
mapCall :: 0.41968
genExpr :: 1.92063
genFunc :: 1.93672
Генераторное выражение должно делать дополнительную работу по сохранению и
восстановлению своего состояния во время выпуска значений.
Какой метод позволяет узнать количество строк датафрейма?
Anonymous Quiz
34%
df.shape
47%
df.size
3%
df.dtypes
16%
Никакой из вышеперечисленных
Модуль timeit позволяет измерить время исполнения кода.
В команде
Вывод у команды будет такой (проверено на Python 3.13.1):
В команде
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