°£´ÜÇÑ python Áú¹®Çϳª µå·Áµµ µÉ±î¿ä?

   Á¶È¸ 2578   Ãßõ 0    

 

안녕하세요? 이번에 Python 을 사용하다 간단한 질문이 생겼는데 어디 물어봐야 할 지 몰라 여기 글을 올립니다.

기존에 포트란이나 C를 써보긴 했었는데 Python 의 경우는 처음인지라 생소하네요.

 

너무 기초적인 질문이라 물어봐도 될지는 모르겠으나, 잠시 여쭙고자 합니다.

 

현재 python에서 is와 ==간의 차이점이 제대로 이해가 되지 않아 글을 올립니다.

녹색 창에 물어보니 is의 경우 type까지 판별한다고 하는데, 그럼에도 불구하고 무엇인가 석연찮은 구석이 있네요

 

예를들면

a=[1,2,3]

b=a

라고 a와 b에 동일한 list를 뽑아옵니다.

 

이 경우 a==b 를 물어볼 경우 true가 나옵니다

a is b를 물어볼 경우도 마찬가지로 true가 작성됩니다.

 

만약

a=[1,2,3]

b=[1,2,3]

일 경우에는

a is b 를 물어보면 false, a==b를 물어보면 true가 뜹니다.

 

이경우 행렬 위치값이라 그럴수 있다고 생각했습니다.

문제는 이후입니다.

 

그렇다면

str(a[0])+str(a[1])+str(a[2]) is str(b[0])+str(b[1])+str(b[2])

이 경우에는 각 구성요소를 str로 변환하여 type까지 맞추어 준것으로 생각되는데 왜 false가 뜰까요?

마찬가지로

str(a[0])+str(a[1])+str(a[2]) == str(b[0])+str(b[1])+str(b[2])

의 경우에는 true가 작동됩니다.

 

부디 답변 부탁드립니다.

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
NaN 2019-10
is ´Â ¿ÀºêÁ§Æ®ÀÇ ·¹ÆÛ·±½º°ªÀ» ºñ±³Çϴ°ÍÀÌ°í (°°Àº ¿ÀºêÁ§Æ®Àΰæ¿ì true°¡µÇÁö¿ä )
==´Â °ªÀ» ºñ±³ÇѴ°ÍÀ̶ó ±×·¸½À´Ï´Ù.

a = 1
b = a
a is b = true

id(a), id(b) µ¿ÀÏÇϸé(°°Àº¸Þ¸ð¸®ÁÖ¼Ò¸é) is¿¡¼­´Â true°¡ ¹ÝȯµÈ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
p.s ÆÄÀ̼±Àº -5ºÎÅÍ 256±îÁöÀÇ int¸¦ ij½ÌÇÏ°í ÀÖ½À´Ï´Ù.
https://github.com/python/cpython/blob/4830f581af57dd305c02c1fd72299ecb5b090eca/Objects/longobject.c#L18-L23
86±èÅ¿µ 2019-10
¿ì¼± ´äº¯ °¨»çµå¸³´Ï´Ù.

Áú¹®ÀÌ ÀÖ½À´Ï´Ù.
¸¸¾à ¿ÀºêÁ§Æ®ÀÇ ·¹ÆÛ·±½º°ªÀ» ºñ±³ÇÏ´Â °ÍÀ̶ó¸é

a=[1,2,3]
b=1
a[0] is b
¿¡¼­ °ªÀº false°¡ ³ª¿Í¾ß ÇÏ´Â°Ô ¾Æ´ÑÁö¿ä.

Àú´Â ¿©±â¼­ a[0]°ªÀ» int ÇüÅÂÀÇ value ¹Þ¾Æ¿Ô±â ¶§¹®¿¡ ÀÌ°Ô ¼ö¸³Çß´Ù°í »ý°¢Çß°Å´ø¿ä.

±×·¡¼­ 
a=[1,2,3]
b=[1,2,3]
a[0] is b[0]
ÀÌ·¸°Ô Çß´õ´Ï true°¡ ³ª¿À´õ¶ó±¸¿ä

±×·¡¼­ ÀÌ°É str·Î º¯È¯À» ½ÃÄѼ­
 '1'+'2' is '1'+'2' ÇüÅ (true)·Î º¯È­½ÃÅ°°íÀÚ

str(a[0])+str(a[1]) is str(b[0])+str(b[1])
·Î ½è´Âµ¥ ¿Ö ¿©±â¿¡´Â false°¡ ³ª¿À´Â °É±î¿ä?
     
¹«¾Æ 2019-10
ÀÚ·áÇü¿¡ µû¶ó ´Ù¸¥ µí ÇÕ´Ï´Ù.
int ¿Í °°Àº ÀÚ·áÇü¿¡¼± is ·Î ºñ±³ÇÒ °æ¿ì ·¹ÆÛ·±½º ºñ±³°¡ ¾Æ´Ñ value ºñ±³¸¦ ÇÏ´Â °Í °°³×¿ä.
Midabo 2019-10
ƯÁ¤ ¹üÀ§ÀÇ integer º¯¼ö¿¡ ´ëÇؼ­´Â ÇØ´ç ¼öÄ¡¸¦ °°Àº ¸Þ¸ð¸® ÁÖ¼Ò¸¦ ¾²µµ·Ï ÇÏ´Â °Í °°½À´Ï´Ù.

a=[1,2,3]
b=1
a[0] is b

¿¡¼­

a=[300,2,3]
b=300
a[0] is b

Çغ¸½Ã¸é False ¹Ýȯ°ªÀÌ ³ª¿É´Ï´Ù
     
Midabo 2019-10
¾Ñ, ¾²°í º¸´Ï À§¿¡ °°Àº ³»¿ëÀÌ ÀÖ³×¿ä  Á¤È®ÇÑ ·¹ÆÛ·±½º °¨»çÇÕ´Ï´Ù.
86±èÅ¿µ 2019-10
´Ùµé °¨»çÇÕ´Ï´Ù. ÀÌ°Ô ³Ê¹« Çò°¥·È½À´Ï´Ù.
±×·¯¸é ¿äÁö´Â ¿ø·¡´Â a=[1,2,3] b=1 a[0] is b
¿¡¼­µµ ¾ÈµÇ¾ß Á¤»óÀε¥ ƯÁ¤ ±ºÁý³× Á¤¼ö³»¿¡¼­´Â °°Àº ¸Þ¸ð¸® ÁÖ¼Ò¸¦ °øÀ¯Çϱ⠶§¹®¿¡ ³ª¿Â´Ù°í ÀÌÇØÇÏ¸é µÉ±î¿ä?

±×·¸´Ù¸é µÎ °³ ±ºÀÇ ¸Þ¸ð¸®°¡ ¾Æ´Ñ µ¥ÀÌÅÍ°ªÀ» ºñ±³ÇÏ´Â °æ¿ì ¾î¶² ¹æ½ÄÀ¸·Î ¼³Á¤À» ÇؾßÇÒ±î¿ä?
86±èÅ¿µ 2019-10
´Ü¼øÈ÷ ==À» ¾²¸é °£´ÜÇÑ ¹®Á¦À̱ä Çѵ¥ is¸¦ ½á¼­ ¸Þ¸ð¸® À§Ä¡¸¦ °°°Ô ¸¸µé·Á°í ÇÑ´Ù¸é ¾î¶²½ÄÀ¸·Î ÇؾßÇÒÁö ±Ã±ÝÇÕ´Ï´Ù.

»ç½Ç Àû´Ùº¸´Ï copy¿Í °°ÀÌ °°Àº ¸Þ¸ð¸® ÁÖ¼Ò¸¦ °øÀ¯ÇÏÁö ¾Ê´ÂÀÌ»ó ÀÌ°Ô °¡´ÉÇϱä ÇÒ±î? ¶ó´Â Àǹ®ÀÌ µé±âµµÇѵ¥.. Ȥ½Ã ¹æ¹ýÀÌ ÀÖ´Ù¸é¿ä.
¹«¾Æ 2019-10
python ÀÌ ±¦ÂúÀº ¾ð¾îÀÎÁÙ ¾Ë¾Ò´Âµ¥
ÀÌ·¸°Ô ¸ðÈ£ÇÑ ¸éÀÌ ÀÖÀ¸¸é (·¹ÆÛ·±½º Á¤µ¶À» Ç϶ó°í ÇÑ´Ù¸é ÇÒ¸»ÀÌ ¾ø°ÚÁö¸¸) ¾²¸é¼­µµ ºÒ¾È ºÒ¾ÈÇÒ °Í °°³×¿ä.
±è°æö 2019-10
Çѹø Çغ¸´Ï 0~256 »çÀÌ´Â true°¡ ³ª¿À´Â°Í °°½À´Ï´Ù.
1 ¹ÙÀÌÆ®·Î ³ªÅ¸³¾ ¼ö ÀÖ´Â °ªÀ̸é 0~255ÀÏÅÙµ¥ ±×°Íµµ ¾Æ´Ï°í...?

>>> a=[ i for i in range(-257,258)]
>>> b=[ i for i in range(-257,258)]
>>> for i in range(0,514):
      print( a[i], a[i] is b[i])

ÀÌ·¸°Ô -257~+257 ±îÁö µ¹·ÁºÃ´Âµ¥, ¿ª½Ã 0~256 »çÀ̸¸ true°¡ ³ª¿À³×¿ä.
     
86±èÅ¿µ 2019-10
is ´Â ¾îÁö°£Çϸé ÇÇÇؼ­ ¹®¹ý ±¸¼ºÀ» ÇØ¾ß°Ú³×¿ä ¤Ð¤Ð


QnA
Á¦¸ñPage 1182/5685
2015-12   1504900   ¹é¸Þ°¡
2014-05   4968572   Á¤ÀºÁØ1
2019-10   7399   NeOpLE
2019-10   3611   ³ë¶ûµÎ²¨ºñ
2019-10   3077   ddeell
2019-10   3199   ·¡³Í
2019-10   6661   2CPUÃÖÁÖÈñ
2019-10   3230   Lucifer
2019-10   2831   ±è¹Î¼º
2019-10   2903   À̹®¿µ
2019-10   2711   ±èÁ¦¿¬
2019-10   3786   LSSAH
2019-10   4052   °¡¸¶±â
2019-10   2378   ºñ¿¤À̺ê
2019-10   2579   86±èÅ¿µ
2019-10   16540   ¸Ó¸®¾ÆÇÁ³×
2019-10   4852   À嵿°Ç2014
2019-10   4224   LSSAH
2019-10   4708   2CPUI±è¼¼ÈÆ
2019-10   3902   ³ëµµÀáµé´Ù
2019-10   5510   µé°í¾çÀÌ
2019-10   3774   ±è¹Î¼º