Имеется матрица:
M=[[1,2,3], [4,5,6], [7,8,9]]
В общем произвожу следующее вычисление:
{sum(row) for row in M}
Результат выполнения:
{24, 6, 15}
Вопрос. Почему он вначале выдает сумму 2 рой строки по индексу , затем 0 , 1 ?
M=[[1,2,3], [4,5,6], [7,8,9]]
{sum(row) for row in M}
{24, 6, 15}
set([6,12,24]) #set([24, 12, 6])
M=[[1,2,3], [4,5,6], [7,8,9]] [sum(row) for row in M] #[6, 15, 24]
[ ... ]
>>> tuple(sum(row) for row in M) (6, 15, 24) >>> list(sum(row) for row in M) [6, 15, 24] >>> set(sum(row) for row in M) set([24, 6, 15])
{x:ord(x) for x in 'spaam'} {'a': 97, 'p': 112, 's': 115, 'm': 109}

d = dict() for x in 'spaam': d[x] = ord(x) print d # {'a': 97, 'p': 112, 's': 115, 'm': 109}
>>> for x in 'spaam': ... print x ... s p a a m
wbtсправедливости ради,
считает он всё правильно. но конструкция { … } - это set, набор. оно не гарантирует, что строчки будут в том же порядке, что зашли в неё.если заменить { … } на
# python3 Python 3.3.2+ (default, Aug 4 2013, 15:50:24) [GCC 4.8.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> {1,2,3} {1, 2, 3} >>> set([1,2,3]) {1, 2, 3}
print( type({}) )