Помогите с кодом

ITема

Новичок
Пользователь
Май 31, 2021
14
0
1
Python:
a = {"a" : a ** 2 for a in range(7)}
print(a)

Здесь у меня выдается {'a' : 36}. Но почему? Из-за чего так получается? Ведь 2 в 7 степени даже не 36 будет, а 128.

Версия Python - 3.8
OC - Windows 7
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Python:
a = {"a" : a ** 2 for a in range(7)}
print(a)

Здесь у меня выдается {'a' : 36}. Но почему? Из-за чего так получается? Ведь 2 в 7 степени даже не 36 будет, а 128.

Версия Python - 3.8
OC - Windows 7
во-первых, не 2^7, а 7^2
во-вторых, range(7) содержит числа от 0 до 6, а 6^2 = 36
но не ясно, почему в словаре только один элемент (уже ясно).
в-третьих, не надо одни и те же переменные писать, страшная вещь
 
  • Мне нравится
Реакции: ITема

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
во-первых, не 2^7, а 7^2
во-вторых, range(7) содержит числа от 0 до 6, а 6^2 = 36
но не ясно, почему в словаре только один элемент. Возможно, дело в том, что Вы используете одно и то же название и в цикле, и в переменной (хотя все еще должно быть 7 элементов)
сорян, я понял. Только один элемент потому, что ключом является строка "а", которая каждый раз перезаписывается
 
  • Мне нравится
Реакции: ITема

ITема

Новичок
Пользователь
Май 31, 2021
14
0
1
во-первых, не 2^7, а 7^2
во-вторых, range(7) содержит числа от 0 до 6, а 6^2 = 36
но не ясно, почему в словаре только один элемент (уже ясно).
в-третьих, не надо одни и те же переменные писать, страшная вещь
Эмм... А п-почему страшная вещь? Не объясните пожалуйста?
 

ITема

Новичок
Пользователь
Май 31, 2021
14
0
1
сорян, я понял. Только один элемент потому, что ключом является строка "а", которая каждый раз перезаписывается
Честно говоря, я не очень понял. В каком смысле строка 'а' каждый раз перезаписывается?
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Честно говоря, я не очень понял. В каком смысле строка 'а' каждый раз перезаписывается?
сначала записывается "a" = 0, потом записывается "a" = 1, потом "a" = 4, но из-за того, что словари не могут иметь двух одинаковых ключей, его значение каждый раз меняется и в итоге получает последнее значение
 

Форум IT Специалистов