2017-05-23 4 views
0
b = set([j-i for j in set([1,2,3,4,5]) for i in set() if j-i>=0]) 

print b 

출력 :작동이 널 (null)로 설정 되 돌리는

set() 

왜이 표현은 set([1,2,3,4,5])을 반환하거나 오류를 제기의 빈 세트를 대신 반환하지?

+1

'set()'에서 내가 무엇을 기대 했습니까? – user2357112

+0

덧붙여 말하자면 수학과 유사한 집합 이해는 빈 집합으로 해석 될 것입니다. 파이썬이 이런 식으로 일하는 것이 아닙니다. – user2357112

답변

1

for i in set()은 0 번 반복되어 빈 세트가됩니다.

+0

아직 반복되지 않는 j입니까? 최소값이 j의 값이 아니어야합니까? –

+0

그리고 어떤 가치가 있어야합니까? – Daniel

+0

@UtkarshAgrawal :'b '의 각 요소는'(i, j)'쌍과 일치해야합니다. 'j' 값은 존재하지 않는다. 왜냐하면 그것들과 일치시킬 i 값이 없기 때문이다. – user2357112

1

0 항목을 반복하고 있기 때문에.

result = set() 
for j in set([1,2,3,4,5]): 
    for i in set(): # <-- there are no i's ! 
     if j - i >= 0: 
      result.add(j - i) 

result 세트에 add에 코드 경로에 도달 될 수 없다 : 루프를 줄이기 것은 명확합니다.