Задать вопрос
phaggi
@phaggi
лужу, паяю, ЭВМы починяю

В чём разница между list() и []?

До сих пор я думал, что это должны быть эквивалентные записи.
print(list(range(5)))
print([range(5)])

Но нет. Где-то под капотом оно сильно разное.
[0, 1, 2, 3, 4]
[range(0, 5)]

В чем разница?
  • Вопрос задан
  • 2565 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
[] - это литерал для list()
list() - это конструктор списка.

В вашем случае разница в контексте. Выражение [range(5)] означает "список содержащий один генератор", а list(range(5)) означает "привести генератор к списку". Во втором случае происходит вычисление генератора в пять целых чисел и конструирование списка из них.
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
в том что range это итератор, а лист это список. Итератор возвращает значение когда его спросят, а список это хранилище всех значений. Функция лист - опрашивает из итератора все значения которые он может вернуть.

разница в том что либо вы помните что у вас (начало,конец,шаг,текущее положение) или вы помните (10,20,30,40,50,60,...100500) - в случае списка ему придется занять память всеми значениями, а в случае итератора лишь хранить параметры для извлечения нового значения.
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Там всё просто.
Считайте, что list - это функция, которая принимает перечисляемый объект и возвращает список с извлеченными из этого объекта элементами.
[], [1,2,3] - это "синтаксический сахар" для удобной записи готовых списков в коде. Первый из этих двух примеров пустой, а второй содержит три элемента. Эта запись подразумевает, что элементами будут выражения, записанные в квадратных скобках через запятую.

Так что list() и [] действительно вернут одинаковый результат, но если речь не о пустых списках, то функция извлечет элементы из своего аргумента, а [1,2,3] примет в качестве элементов то, что внутри через запяту.

Прочитайте лучше систематически в книжке того же Лутца. Иначе вы своими догадками ни язык нормально не освоите, ни время не сэкономите.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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