>

목록 이해력을 이해 한 후 누군가가 중첩 구조를 분석 할 수 있다면 다음 코드에서 유닛과 동료를 해독하려고합니다. 의도 된 결과는 나에게 분명하지만 역학은 그렇지 않습니다. 감사합니다.

rows = "ABCDEFGHI"
cols = "123456789"
boxes = cross(rows, cols)
row_units = [cross(r, cols) for r in rows]
column_units = [cross(rows, c) for c in cols]
square_units = [cross(rs, cs) for rs in ('ABC', 'DEF', 'GHI') for cs in ('123', '456', '789')]
unitlist = row_units + column_units + square_units
#trying to decipher following two lines
units = dict( ( s, [ u for u in unitlist if s in u ] )  for s in boxes)
peers = dict((s, set(sum(units[s], [])) - set([s])) for s in boxes)

수정-주어진 답변을 기반으로

units = dict((box, [unit for unit in unitlist if box in unit]) for box in boxes)

와 동일하다

units = {}
for box in boxes:
    units[box] = []
    for unit in unitlist:
        if box in unit:
            units[box].append(unit) # where is this in above shorthand form?


  • 답변 # 1

    단위의 경우 기본적으로 상자 단위 s 를 확인합니다.  포함되어 있습니다.

    units = dict()
    for s in boxes:
       temp = []
       for unit in unitlist:
          if s in unit:
              temp.append(unit)
       units[s] = temp
    
    

    이제 동료를 위해 특정 상자의 모든 동료를 그룹화합니다.  세트로 사전에 저장

    s
    
    

    이 방법으로 볼 수 있습니다 :

    peers = dict((s, set(sum(units[s], [])) - set([s])) for s in boxes)
    
    

    peers = dict() for s in boxes: temp = set(sum(units[s],[])) temp = temp - set([s]) peers[s] = temp  이 코드는 상자 sum(units[s],[]) 의 단위로 모든 요소를 ​​더합니다  단일 목록에서 s  단일 목록에서 모든 반복을 제거하십시오.

    그리고 마지막으로 set(...)  현재 상자 temp = temp - set([s]) 를 제거  상자는 피어 자체가 될 수 없으므로 세트에서.

    s

  • 이전 asp.net - 셀 배경 얻기 C # Google 스프레드 시트
  • 다음 go - 마지막 몇 바이트 만 변경되는 golang 데이터에서 효율적으로 해시 (SHA 256)하는 방법