Доброе утро/день/вечер/ночь, Codeforces!
Сегодня я впервые попробовал сдать несколько задач на Python.
Во время написание одной из них, я обнаружил что-то совсем непонятное в поведении вложенных списков:
Пусть нам нужен массив 2 на 2.
Пишем:
a = [[0]*2]*2
print "Before:"
print a
a[0][0] = 1
print "After:"
print a
Получаем:
Before:
[[0, 0], [0, 0]]
After:
[[1, 0], [1, 0]]
Вопрос: почему изменился второй список?
Если написать немного по-другому:
a = [[0]*2]
a.append([0]*2)
print "Before:"
print a
a[0][0] = 1
print "After:"
print a
Получаем:
Before:
[[0, 0], [0, 0]]
After:
[[1, 0], [0, 0]]
Вопрос: в чем разница?
Windows 7, 32-bit, Python 2.7.1
Строка запуска: python solution.py < input.txt