2016-09-30 2 views
1

저는 Python을 처음 사용합니다. 이 줄이 어떻게 작동하는지 설명 할 수 있다면 크게 감사하겠습니다. for-loop 앞에 번호가 있다는 것은 무슨 의미입니까?for-loop 앞에 숫자가 의미하는 것

adjacency_matrix = [[0 for i in range(max_index + 1)] for j in range(max_index + 1)] 

나는 그것이 어떻게 작동하는지

max_index = 4 
adjacency_matrix = [[0 for i in range(max_index + 1)] for j in range(max_index + 1)] 
>>>[[0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0], 
    [0, 0, 0, 0, 0]] 

하지만 이해하지 못하는 것을 알고있다.

감사

+2

StackOverflow에 오신 것을 환영합니다. 대답 (체크 표시)을 선택하고 유용한 답변과 의견을 투표하는 것을 잊지 마십시오. –

+1

사이드 노트 :'[[0] * (max_index + 1) 범위 내 (max_index + 1)]'는 이것을하기에 약간 더 효율적인 방법입니다. 곱하기로 외부 포장을 만들 수는 없지만 (복사본을 만드는 대신 포함 된 참조를 복제하기 때문에), 가장 안쪽의 목록에는 불변 유형이 포함되어 있으므로 시퀀스 곱셈에 의해 형성 될 수 있습니다. – ShadowRanger

답변

3

그것은 list comprehension이다. - 제로의 각 목록이 상위 목록에 중첩지고 같은 방법으로

>>> adjacency_matrix = [] 
>>> for j in range(max_index + 1): 
...  inner_list = [] 
...  for i in range(max_index + 1): 
...   inner_list.append(0) 
...  adjacency_matrix.append(inner_list) 
+1

나는 그것을 지금 본다. 고마워. 단계별로 설명 된 좋은 동영상을 발견했습니다. https://www.youtube.com/watch?v=3dt4OGnU5sM – Nick

0

0은 지능형리스트가 배열 (목록)에 추가되는 값입니다 : 당신은 다음과 있음을 다시 작성할 수 있습니다.

>>> max_index = 4 
>>> adjacency_matrix = adjacency_matrix = [[True for i in range(max_index + 1)] for j in range(max_index + 1)] 
>>> adjacency_matrix 
[[True, True, True, True, True], 
[True, True, True, True, True], 
[True, True, True, True, True], 
[True, True, True, True, True], 
[True, True, True, True, True]] 

그렇지 않으면 관절에 대한-루프에 지능형리스트의 번역 @의 오즈의 답변을 확인하고 pydoc이에 대한 링크를위한 ... 다른 정수, 부동 소수점, 문자열, 부울 등로 변경합니다 목록 comps.

기본적으로 상점은, 당신이 호출 할 것은 우리가 목록을 채우기 위해 지능형리스트에서 변수를 사용하는 경우 조건이 충족 될 때마다

[ ADD_THE_FOLLOWING_LISTS: 

    [ADD_THIS_VALUE_TO_EACH_INNER_LIST = 0, True, etc... 
    `for` each_integer 
    `in` the `range`_of 
    (zero through four - not including five)] = [value, value, value, value, value] 

...............................`for` each_number 
           `in` the `range`_of 
           (zero through four - not including five)] 
    ] = a (4 + 1) x (4 + 1), or 5x5 grid of values 

[ [value, value, value, value, value], 
    [value, value, value, value, value], 
    [value, value, value, value, value], 
    [value, value, value, value, value], 
    [value, value, value, value, value] ] 
1

는, 결과리스트는 변수의 값을합니다. '0'을 사용하고 있기 때문에 조건이 충족 될 때마다 값 '0'으로 채워지는 목록을 의미합니다.

관련 문제