Я понимаю, что они оба по сути одно и то же, но с точки зрения стиля, что лучше (более Pythonic) для создания пустого списка или dict?
python
performance
list
dictionary
Ной Макилрайт
источник
источник
list(i for i in range(10) if i % 2)
timeit()
функция сообщает общее количество времени на выполнение указанного количества итераций, которое установлено1000000
по умолчанию. Таким образом, приведенные выше примеры - это количество секунд для выполнения фрагмента кода миллион раз. Напримерtimeit('dict()', number=1) // -> 4.0531158447265625e-06
(одна итерация) whiletimeit('dict()') // -> 0.12412905693054199
(миллион итераций)На мой взгляд ,
[]
и{}
являются наиболее вещий и машиночитаемые способы создания пустых списков / dicts.Однако будьте осторожны
set()
, например:Может сбивать с толку. Первый создает набор с одним элементом, второй создает пустой dict, а не набор.
источник
{}
всегда создает пустой dict.{1,2,3}
создает набор в 2.7+, но является синтаксической ошибкой в2.6
более ранних версиях.some_epic_set
, указывающим на пустойdict
объект ... это не пустой набор. Для пустого набора нужно использоватьset()
.{5}
создается набор с одним элементом,5
и{}
это пустой dict.{*()}
для создания пустогоset
с буквальным синтаксисом. Я называю это одноглазым оператором обезьяны. :-)ДИКТ литерал может быть крошечными немного быстрее , так как его байткод короче:
То же самое относится и к
list
vs[]
источник
CALL_FUNCTION
занимает по крайней мере столько же времени, сколькоBUILD_MAP
(по сути вызываемая функцияBUILD_MAP
), аLOAD_GLOBAL
занимает лишь дополнительные накладные расходы.ИМХО, использование
list()
иdict()
делает ваш Python похожим на C. Ух.источник
В случае разницы между [] и list () есть ловушка, на которую я не видел, чтобы кто-нибудь указал. Если вы используете словарь в качестве члена списка, они дадут совершенно разные результаты:
источник
[foo_dict]
при использованииlist((foo_dict,))
.list()
Метод принимает итератор , поскольку это единственный параметр и итерацию над ним , чтобы добавить элементы в список. Это вызовет аналогичную ловушку, сделавlist(some_list)
список более плоским.list () и [] работают по-разному:
list () всегда создает новый объект в куче, но [] может повторно использовать ячейку памяти по многим причинам.
источник
есть одно различие в поведении между [] и list (), как показано в примере ниже. нам нужно использовать list (), если мы хотим получить список чисел, иначе мы получим объект карты! Не знаю, как это объяснить.
источник
Пара квадратных скобок обозначает один из объектов списка или индекс индекса my_List [x].
Пара фигурных скобок обозначает объект словаря.
a_list = ['вкл', 'выкл', 1, 2]
a_dict = {вкл: 1, выкл: 2}
источник
В основном это вопрос выбора. Это вопрос предпочтений.
Однако обратите внимание, что, например, если у вас есть цифровые клавиши, вы не можете этого сделать:
Ты должен сделать:
источник
mydict = {1:"foo", 2:"bar"}
(без кавычек для ключей).