Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 
							
						 6
  6   
								
								Вобщем говорил я недавно с человечком и напомнил он мне про списки и кортежи. честно говоря много что с годами по вылетало из башки дырявой. я возьми и ляпни что кортежи могут меняться. А потом поседел подумал и оказывается я был прав.  
 
>>> 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)
Офлайн
 
							 
							
						 33
  33   
								
								sypper-pit
я возьми и ляпни что кортежи могут меняться. А потом поседел подумал и оказывается я был прав.
sypper-pitТы вообще о чём?
А вот что делать если нужно избавится от скобок в 1 приём. может кто тему развить сможет ?
с[0][0]
Отредактировано Budulianin (Окт. 22, 2014 20:27:38)
Офлайн
 
							 4
  4   
								
								cortege взломан, все в катафалк!
Офлайн
 
							 
							
						 6
  6   
								
								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)
Офлайн
 
							 
							
						 221
  221   
								
								sypper-pit
вы забыли что переменная это тоже не изменяемый тип:
>>> a=1 >>> id(a) 14282952 >>> >>> a=2 >>> id(a) 14282940
Офлайн
 
							 
							
						 6
  6   
								
								Так и получается тогда, что кортеж не создаёт новый блок в памяти, а ссылается на тип переменной.
Возможно это связанно с попыткой сохранить ОЗУ и не забивать её новыми данными.
Офлайн
 
							 47
  47   
								
								Вот что форкекс окоянный с людьми делает
Офлайн
 
							 
							
						 33
  33   
								
								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)
Офлайн
 
							 
							
						 6
  6   
								
								Budulianin
Сам tuple не изменятся я об этом знаю. И по идее не должны изменяться данные внутри него. Просто я подумал, что кортежи хранят внутри себя только сами данные и никак нельзя их изменить(не учитывая изменения в блоке памяти итд). Получается что изменить данные всё же можно. И вот в чем был эксперимент. 
Вопрос был именно как вытянуть данные используя 
[0]
[0][0]
Офлайн
 
							 47
  47   
								
								sypper-pit
сам себе противоречишь
говоришь что tuple изменяемый и в тоже время не можешь изменить первый элемент тупля с массива на число
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)