2017-10-17 2 views
-1

의 비교 목록 :파이썬 : 그냥 다음 궁금 튜플

print [()] == list(tuple()) # prints False 

첫 번째는 빈 튜플을 포함하는 목록은, 두 번째는 빈 목록입니다.

왜이 코드는 True 대신 (파이썬 2와 3에서 같은 결과) False를 출력합니까?

미리 감사드립니다.

+5

같은 결과가 나오지 않으므로? 첫 번째 요소는 1 요소가있는 목록이고 두 번째 요소는 0 요소가있는 목록입니다. 'list()'** iterable을리스트로 변환합니다 **. 튜플은 반복 가능하며, 빈 튜플을리스트로 변환합니다. –

+0

알았어요, 고마워! – NI6

답변

3

빈 목록이있는 하나의 요소 (빈 튜플)가있는 목록을 비교했습니다. list(tuple()) 당신이 생각하는대로하지 않습니다.

왜냐하면 list(object)이 아니기 때문입니다.은 하나의 개체를 요소로 사용하여 목록을 생성합니다. list()은 반복 가능해야하는 오브젝트를으로 변환합니다. 그것은 복사 요소 밖으로 개체의는 :

>>> dictionary = {'foo': 'bar'} 
>>> list(dictionary) # iteration over a dictionary produces keys 
['foo'] 

당신은 그것을 빈 튜플을 준, 그래서 결과는 빈 목록입니다

>>> empty =() 
>>> list(empty) 
[] 

tuple()이 방법에 의해, 같은 일을한다. 그리고 및 tuple()인수없이은 빈 개체를 생성합니다.