В чем основные различия между использованием list () и []?
Самым очевидным и видимым отличием между list () и [] является синтаксис. Оставив здесь на минуту синтаксис, кто-то, чей новый или промежуточный контакт с python может утверждать, что они оба являются списками или происходят от одного и того же класса; это правда. Что, кроме того, повышает важность понимания основных различий между ними, большинство из которых изложены ниже.
list () - это функция, а [] - буквальный синтаксис .
Давайте посмотрим, что происходит, когда мы вызываем list () и [] соответственно через дизассемблер.
>>> import dis
>>> print(dis.dis(lambda: list()))
1 0 LOAD_GLOBAL 0 (list)
3 CALL_FUNCTION 0 (0 positional, 0 keyword pair)
6 RETURN_VALUE
None
>>> print(dis.dis(lambda: []))
1 0 BUILD_LIST 0
3 RETURN_VALUE
None
Вывод вышеприведенного дизассемблера показывает, что для буквального синтаксиса версия не требует глобального поиска, обозначенного кодом операции LOAD_GLOBAL или вызовом функции, обозначенным кодом операции CALL_FUNCTION.
В результате буквальный синтаксис работает быстрее, чем его аналог. - Давайте возьмем секунду и посмотрим на сроки ниже.
import timeit
>>> timeit.timeit('[]', number=10**4)
0.0014592369552701712
>>> timeit.timeit('list()', number=10**4)
0.0033833282068371773
С другой стороны, не менее важно и стоит отметить, что буквальный синтаксис []
не распаковывает значения. Пример распаковки показан ниже.
>>> list('abc') # unpacks value
['a', 'b', 'c']
>>> ['abc'] # value remains packed
['abc']
Что такое литерал в питоне?
Литералы - это обозначения или способ записи значений констант или необработанных переменных, которые python распознает как встроенные типы.
Источник из моего поста PythonRight - в чем разница между списком и [] .