Непонятки в Python
Изучаю Python по книге Learning Python 5E.
Дошел до Chapter 4, где рассказывается про списки (lists). Смутил один пример.
Итак, имеется матрица:
>>> M = [[1, 2, 3], # A 3 × 3 matrix, as nested lists
[4, 5, 6], # Code can span lines if bracketed
[7, 8, 9]]
>>> M
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Сперва показывается работа с map
, которая для над каждым элементом M
совершает действие sum
:
>>> list(map(sum, M)) # Map sum over items in M
[6, 15, 24]
Далее, приводится следующий код, который должен работать эквивалентно предыдущему, однако результат отличается:
>>> {sum(row) for row in M} # Create a set of row sums
{24, 6, 15}
Причем, если генерить словарь, результат «нормальный»:
>>> {i : sum(M[i]) for i in range(3)} # Creates key/value table of row sums
{0: 6, 1: 15, 2: 24}
Внимание, вопрос: обьяните различие в результатах. Почему в первом случае результат 6, 15, 24
, во втором 24, 6, 15
, а в третьем снова 6, 15, 24
?
Спасибо