Форум сайта python.su
Вобщем говорил я недавно с человечком и напомнил он мне про списки и кортежи. честно говоря много что с годами по вылетало из башки дырявой. я возьми и ляпни что кортежи могут меняться. А потом поседел подумал и оказывается я был прав.
>>> a = [3] >>> b = 2 >>> c = (a,b) >>> c ([3], 2) >>> a[0] = 1 >>> c ([1], 2) >>>
>>> d = c[0] >>> d [123] >>> d[0] 123 >>> с[0]
Отредактировано sypper-pit (Окт. 22, 2014 20:21:35)
Офлайн
sypper-pit
я возьми и ляпни что кортежи могут меняться. А потом поседел подумал и оказывается я был прав.
sypper-pitТы вообще о чём?
А вот что делать если нужно избавится от скобок в 1 приём. может кто тему развить сможет ?
с[0][0]
Отредактировано Budulianin (Окт. 22, 2014 20:27:38)
Офлайн
cortege взломан, все в катафалк!
Офлайн
BudulianinХорошо тогда как же получается такой расклад ?
как содержалась ссылка на этот объект, так и будет содержаться.
>>> c ([1], 2) >>> c[0][0] 1 >>> a = 123 >>> c[0][0] 1 >>> c ([1], 2) >>>
kamisamaТема создана больше для прикола чем для практического применения, хотя может кому и пригодится эта фича.
cortege взломан, все в катафалк!
Budulianinда я об этом … только как это сделать минуя
Ты вообще о чём?с[0][0]
[0][0]
Отредактировано sypper-pit (Окт. 23, 2014 01:41:04)
Офлайн
sypper-pit
вы забыли что переменная это тоже не изменяемый тип:
>>> a=1 >>> id(a) 14282952 >>> >>> a=2 >>> id(a) 14282940
Офлайн
Так и получается тогда, что кортеж не создаёт новый блок в памяти, а ссылается на тип переменной.
Возможно это связанно с попыткой сохранить ОЗУ и не забивать её новыми данными.
Офлайн
Вот что форкекс окоянный с людьми делает
Офлайн
sypper-pit
Хорошо тогда как же получается такой расклад ?
sypper-pit
При этом я изменил “a” на другое значение и кортеж не поменялся.
sypper-pit
Тема создана больше для прикола чем для практического применения, хотя может кому и пригодится эта фича.
>>> c ([1], 2) >>> c[0][0] 1 >>> a = 123 >>> c[0][0] 1 >>> c ([1], 2) >>>
sypper-pit
Зарегистрирован: 2009-01-30
sypper-pitWTF!?
Сообщения: 1017
>>> a = [1] >>> b = (a,) >>> id(a) 4459235232 >>> id(b[0]) 4459235232 >>> a = 123 >>> id(a) 140604929500048 >>> id(b[0]) 4459235232
Отредактировано Budulianin (Окт. 23, 2014 11:43:11)
Офлайн
Budulianin
Сам tuple не изменятся я об этом знаю. И по идее не должны изменяться данные внутри него. Просто я подумал, что кортежи хранят внутри себя только сами данные и никак нельзя их изменить(не учитывая изменения в блоке памяти итд). Получается что изменить данные всё же можно. И вот в чем был эксперимент.
Вопрос был именно как вытянуть данные используя
[0]
[0][0]
Офлайн
sypper-pit
сам себе противоречишь
говоришь что tuple изменяемый и в тоже время не можешь изменить первый элемент тупля с массива на число
Офлайн