구문 !=
과 is not
의 차이점에 대해 잘 모르겠습니다. 내가 지능형리스트에 is not
를 사용할 때, 그것이 내가 !=
를 사용하는 경우와 다른 결과를 생성Python : 차이점은! =와 "is not"입니다.
>>> s = 'a'
>>> s != 'a'
False
>>> s is not 'a'
False
그러나 : 그들은 같은 일을 할 것으로 보인다.
>>> s = "hello"
>>> [c for c in s if c is not 'o']
['h', 'e', 'l', 'l', 'o']
>>> [c for c in s if c != 'o']
['h', 'e', 'l', 'l']
왜
o
는 두 번째 목록을 첫 번째 목록에 포함되어 있지만 되었나요? 개체의 정체성에 대한
이 두 연산자에 대한 파이썬 언어 참조를 살펴본 결과, 무엇을 보았습니까? 이것은 분명해 보입니다 : http://docs.python.org/reference/expressions.html#notin. 어떤 부분이 너를 혼란스럽게 했는가? –
@ FChannel72 나는 **의 존재가 **''c ''가 아닌''id ''의 평가를 자극하는 표현에 있다고 생각한다. 숫자 (주소 id (c))는 문자열이 아니므로 결과는 True가되므로 ** c **가 작성 목록에 보관됩니다. – eyquem
@ FChannel72 문제는 결과를 확인하고 두 표현에 대해''[ 'h', 'e', 'l', 'l']''를 얻는 것입니다. 나는 이유가 궁금 해서요. "존재하지 않는다"면 id (c)를 비교하기 위해 자극하고, 그것을 id ('o')와도 비교하지 않을 것입니다. 사실,''c ''가 아닌 것 같다 ''는 파이썬 2.7에서''id (c)! = id ('o')''로 평가된다. – eyquem