Почему выражение внутри функции map () выполняется только при использовании функции count ()? [Дубликат]

%timeit - функция ipython magic , которая может использоваться для временного выделения определенного фрагмента кода (один оператор выполнения или один метод)

. docs:

% timeit

Time execution of a Python statement or expression

Usage, in line mode:
    %timeit [-n -r [-t|-c] -q -p

-o] statement

blockquote>

Чтобы использовать его, например, если мы хотим узнать, работает ли с xrange быстрее, чем используя range, вы можете просто сделать:

In [1]: %timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop

In [2]: %timeit for _ in xrange(1000): True
10000 loops, best of 3: 29.6 µs per loop

И вы получите тайминги для них.

Главное преимущество заключается в том, что вам не нужно импортировать timer.timeit , и запустите код несколько раз, чтобы выяснить, какой из них лучше подходит; % timeit будет автоматически вычислять количество прогонов, необходимых для вашего кода, в зависимости от всего 2-секундного окна выполнения.

1
задан Gayan Mettananda 16 January 2019 в 10:20
поделиться

2 ответа

Промежуточные операции (например, отображение) возвращают поток и вызываются терминальными операциями, которые возвращают не потоковые значения.

0
ответ дан g-t 16 January 2019 в 10:20
поделиться

потому что count является терминальной операцией, и потоки вызываются / исполняются только тогда, когда присутствует терминальный; говорят, что они ленивы ...

Просто обратите внимание, что в java-9 и выше ваш пример не будет печатать эти утверждения из map в любом случае, поскольку все, что вас волнует, это , сколько и map бесполезно. ..

0
ответ дан Eugene 16 January 2019 в 10:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: