[[1] * 4] * 3
или даже:
[[1, 1, 1, 1]] * 3
Создает список, который ссылается на внутреннее [1,1,1,1]
3 раза - не три копии внутреннего списка, таким образом, любое время, Вы изменяете список (в любом положении), Вы будете видеть изменение три раза.
Это совпадает с этим примером:
>>> inner = [1,1,1,1]
>>> outer = [inner]*3
>>> outer
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
>>> inner[0] = 5
>>> outer
[[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]
, где это, вероятно, немного менее удивительно.
Это длинная и печальная история .
В итоге:
Mozilla / 1.0 (Win3 .1)
. Он публично переименован в Netscape, но в своем User-Agent сохраняет свое первоначальное имя. Mozilla /
, потому что веб-серверы постоянно отслеживают и обслуживают страницы с фреймами - функция, поддерживаемая как Netscape, так и IE, но не другими браузерами того времени, - для Netscape только. Mozilla /
, как и предыдущие браузеры. Также возникает множество другой чуши, например, современный пользовательский агент Chrome, одновременно утверждающий, что он Mozilla, Chrome, Safari и «как Gecko». Я думаю, это было связано с: http://en.wikipedia.org/wiki/User_agent#User_agent_spoofing
В те времена Netscape (кодовое название Mozilla ) был основным конкурентом IE, и они хотели предотвратить отклонение сайтами, отвергающими другие браузеры, кроме Netscape.
Потому что так себя идентифицировала Netscape, а Microsoft хотела работать с сайтами, которые обнаруживали бы Netscape и отклоняли все остальное.