파이썬 for문 관련

조회수 590회
grid = [[(0, 0, 0) for x in range(10)] for x in range(20)]

accepted_pos = [[(j,i) for j in range(10) if grid[i][j] == (0, 0, 0)] for i in range(20)]  

accepted_pos = [j for sub in accepted_pos for j in sub] 

Python Shell에서 확인해보길 grid[[(0,0,0), (0,0,0),] .... ] 10개씩 20묶음으로 list에 저장되고

두번째 행에서 grid[i][j]에서 grid[19][9]까지 grid[i][j] == (0, 0, 0) 인지를 검사하여 [[(0,0), (1,0) ..],.] 10개씩 20묶음으로 list에 저장되는데

세번째 행이 이해가 잘 안됩니다. [[(0,0), (1,0) ..],..] 다차원 리스트에서 [(0,0), (1,0) ..,.]으로 만들어 주는 것 같은데 뭔가 이해가 안갑니다........

1 답변

  • 제 추측에는 1행 - grid 를 (0, 0, 0) * 10 * 20로 초기화하는것은 초기에 진행하는것이고 그후로는 그냥 2행, 3행만 사용할것 같은데요.

    그렇게 가정하고 보면 2행에서 나오는 결과는 먼저 행에 관해서 다음에 렬에 관해서 (0, 0, 0)인것을 찾아주는데요. 적어주신것처럼 2차원배열로 떨어져요.

    그런데 이걸 그대로 이용하면 불편하잖아요.

    실례로 여기서 무엇인가 찾을것이 있는데 그럴때마다 2차원으로 순환을 돌리느니 3행에서처럼 1차원배열로 간단화하고 계속 사용하는게 더 편리할것 같아서 그런거라고 생각해요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)