Извлечение часов до DateTime (SQL Server 2005)

На самом деле это точно, что Вы ожидали бы. Давайте анализировать то, что происходит здесь:

Вы пишете

lst = [[1] * 4] * 3

, Это эквивалентно:

lst1 = [1]*4
lst = [lst1]*3

Это означает lst, список с 3 элементами все указывающие lst1. Это означает, что два после строк эквивалентны:

lst[0][0] = 5
lst1[0] = 5

Как lst[0] только lst1.

Для получения желаемого поведения можно использовать понимание списка:

lst = [ [1]*4 for n in xrange(3) ]

В этом случае, выражение переоценено для каждого n, ведя к различному списку.

164
задан Lukasz Szozda 12 July 2017 в 21:43
поделиться