Импортируя файл JSON с помощью mongimport, продолжайте получать `неожиданный идентификатор`?

Понятия списка более компактны и быстрее, чем явный цикл for, создающий список:

def slower():
    result = []
    for elem in some_iterable:
        result.append(elem)
    return result

def faster():
    return [elem for elem in some_iterable]

Это связано с тем, что вызов .append() на list заставляет объект списка расти (в кусках), чтобы сделать пространство для новых элементов индивидуально, в то время как понимание списка собирает все элементы перед созданием list, чтобы соответствовать элементам за один раз:

>>> some_iterable = range(1000)
>>> import timeit
>>> timeit.timeit('f()', 'from __main__ import slower as f', number=10000)
1.4456570148468018
>>> timeit.timeit('f()', 'from __main__ import faster as f', number=10000)
0.49323201179504395

Однако это не значит, что вы должны начинать пользоваться списками для всего! Постижение списка все равно построит объект списка ; если вы используете понимание списка только потому, что оно дает вам однострочный цикл, подумайте еще раз. Вероятно, вы тратите впустую циклы, создавая объект списка, который вы затем отбрасываете. Просто придерживайтесь нормального цикла for в этом случае.

29
задан cathy.sasaki 11 May 2013 в 19:03
поделиться