Я ожидал, что frozenset
будет работать лучше, чем set
, потому что первые неизменяемы. Однако, когда я посмотрел это, в ответах просто говорилось, что наборы и frozenset
просто содержат много одинаковых реализаций. Что заставляет tuple
работать лучше, чем list
, а frozenset
не может подражать set
?
dict
) используют массив с превышением доступности для базовой хеш-таблицы, чтобы уменьшить коллизии хэшей. В принципе, они все одинаковые. Кортежу, поскольку он неизменяем, не нужно выделять больше памяти, чем ему абсолютно необходимо для хранения заданных значений, в то время как список должен перераспределять память по мере своего роста. - person chepner   schedule 10.04.2019ipython
для списка%timeit [x for x in l1 if x in l1]
дай мне6.6 ms ± 45.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
для кортежа%timeit [x for x in t1 if x in t1]
дай мне6.53 ms ± 64.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
где l1 - это список, а t1 - это кортеж списка. - person Brown Bear   schedule 10.04.2019