Если теория подтверждается экспериментом - это хорошо,
если не подтверждается - это интересно.
если не подтверждается - это интересно.
Потребовалось красиво создать boolean двухмерный массив, например 3 * 3, на python:
[[False]*3]*3
Коллега подсказал, что возможны проблемы при использовании подобного подхода:>>> x = [[True]*3]*3
>>> x
[[True, True, True], [True, True, True], [True, True, True]]
>>> x[0][0]=False
>>> x
[[False, True, True], [False, True, True], [False, True, True]]
почему так происходит ? ответ:
>>> id(x[0])
3086739084L
>>> id(x[1])
3086739084L
>>> id(x[2])
3086739084L
а по сему правильно будет
x = [[False]*3 for i in range(3)]
2 комментария:
Спасибо
спасибо! ломала голову как же это =) а оказывается так просто
Отправить комментарий