2013-03-01 1 views
1
def cross(A, B): 
    "Cross product of elements in A and elements in B." 
    return [a+b for a in A for b in B] 

digits = '123456789' 
rows  = 'ABCDEFGHI' 
cols  = digits 
squares = cross(rows, cols) 
unitlist = ([cross(rows, c) for c in cols] + 
      [cross(r, cols) for r in rows] + 
      [cross(rs, cs) for rs in ('ABC','DEF','GHI') for cs in ('123','456','789')]) 
units = dict((s, [u for u in unitlist if s in u]) 
      for s in squares) 
peers = dict((s, set(sum(units[s],[]))-set([s])) 
      for s in squares) 

누가 간단히 말해서 마지막 두 줄의 의미를 이해할 수 있습니까?프로그램 이해

답변

0
units = dict((s, [u for u in unitlist if s in u]) 
      for s in squares) 

, 나는 두 번째에 대한 첫 번째 줄하지만 무엇을 얻을

units = dict() 
for s in squares: 
    units[s] = [u for u in unitlist if s in u] 

또는 다음과 같은 비효율적 인 버전과도 유사한

units = dict() 
for s in squares: 
    units[s] = [] 
    for u in unitlist: 
     if s in u: 
      units[s].append(u) 
+0

감사와 동일합니다? – awsomeguy

+0

@LewisC : Python [sets] (http://docs.python.org/2/library/stdtypes.html#set)에 대해 읽고 기본 제공 액수 – Abhijit