Форум сайта python.su
0
Для интереса залез в вакансии Яндекса и наткнулся на такой пример:
x = [[]]*3 x[0].append('a') x[1].append('b') x[2].append('c') x[0]=['d'] print x
[['d'],['b'],['c']]
[['d'], ['a', 'b', 'c'], ['a', 'b', 'c']]
Отредактировано Broglie (Дек. 28, 2015 21:59:09)
Офлайн
253
Broglie
Почему так?
>>> [id(i) for i in [[]]*3] [20549760, 20549760, 20549760]
Отредактировано doza_and (Дек. 28, 2015 22:25:27)
Офлайн
857
BroglieВ списке хранятся не сами объекты, а их адреса. Когда обращаешься к объекту в списке, происходит переход к этому объекту по его адресу . Это со всеми объектами происходит.
Почему так?
>>> lst = [1] * 3 >>> lst [1, 1, 1] >>> id(lst[0]) 1287271584 >>> id(lst[1]) 1287271584 >>> id(lst[2]) 1287271584 >>>
Офлайн
0
Вот так вот:
x = [[] for x in range(3)] x[0].append('a') x[1].append('b') x[2].append('c') x[0]=['d'] print x input()

Отредактировано A.N.Onim (Дек. 29, 2015 21:50:05)
Офлайн