파이썬 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차원배열로 간단화하고 계속 사용하는게 더 편리할것 같아서 그런거라고 생각해요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력