프로그래밍에 대한 저의 첫 경험 인 파이썬을 배우는 중입니다. 나는 일련의 수업을 통해 일하고있다 here.파이썬에서리스트 인덱스 이름 바꾸기 - 코드 설명 찾기
내가 중점을 두는 교훈은 중첩 루프와 관련이 있습니다. 그러나 한 가지 연습에서는 목록 항목의 인덱스 이름을 본질적으로 바꾸어 문제에 대한 해결책을 제시합니다. 명심하십시오, 이것은 사전이 사용되지 않습니다. 이러한 교훈이 훌륭하게 진행되는 동안, 문제에 대한이 한 가지 대답은 무슨 일이 일어나고 있는지에 대한 설명이 없으므로 당황 스럽습니다. 게다가, 나는 레슨 시리즈 나 다른 곳에서는이 기술에 대한 참조를 찾을 수 없다.
여기 연습 문제가 저에게 요구하는 사항입니다. 1 중첩 된 for 루프를 사용하여 달력을 나타내는 3 차원 목록을 채우는 프로그램 작성 : 최상위 목록에는 각 달의 하위 목록이 있어야하며 각 달에는 4 주가 있어야합니다. 빈 목록 2 사람이 읽을 수있는 월 이름으로 캘린더의 한 달에 쉽게 액세스 할 수 있도록 코드를 수정하고 매주 1부터 번호가 매겨진 이름으로 매주 액세스하도록 코드를 수정하십시오. 7 월 둘째 주에 문자열 설명).
첫 번째 부분은 아무 문제가 없었다. 두 번째 부분은 비트가 매개 변수를 제공하지만, 주어진 대답은 내가 기대했던 아니었다 도전이었다.
내가 본 사전을 사용하여 스택 오버플로에 대한 설명 Python: can I have a list with named indices?
그러나, 여기에 솔루션을 제안했다 :이 정확히 어떻게 작동하는지
(JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER) = range(12)
(WEEK_1, WEEK_2, WEEK_3, WEEK_4) = range(4)
calendar = []
for m in range(12):
month = []
for w in range(4):
month.append([])
calendar.append(month)
calendar[JULY][WEEK_2].append("Go on holiday!")
print(calendar)
누군가가 설명 할 수 명명 인덱스 목표의이 종류를 달성? 나는 달과 주 이름이 문자열 일 필요는 없지만 오히려 변수 이름이라는 것이 이상하다는 것을 알았다. 각 변수 이름은 정의 된 특정 범위의 각 항목에 할당되어 있다고 생각합니다. 그러나 변수 이름을 목록 색인으로 사용할 수 있다는 사실에 놀랐습니다. 이 작업이 끝나면 더 이상 인덱스로 인덱스를 참조 할 수 없습니다. 예를 들어, 내가 사용할 수 없습니다
calendar[1][1].append("This is the first week of January.")
내가 마지막 줄 후 간단한 루프를 쓸 때 나는 더이 때문에 혼란스러워하고 있습니다 :
for i in range(12):
print(i)
을 내가로 (11)를 통해 숫자 0에서 인쇄를 얻을 수를 평범하지만이 변수 이름은 아닙니다.
정확히 무슨 일이 벌어지고 있으며 어떻게 작동합니까?
1 월 첫 번째 주에 대한 예제에서이 색인이 1 씩 나간 것으로 나타났습니다. 나는 돌아가서'calendar [0] [0] .append ("1 월 첫째 주")'를 다시 시도했다. 전에 '인덱스가 범위를 벗어났습니다'라는 IndexError를 받았습니다. 그러나 이번에는 제가하지 않았습니다. 그래서 제가 원래의 시도에서 또 다른 오류가 있다고 믿게됩니다. 귀하의 설명이 나에게 도움이됩니다. 이제 색인에 사용되는 변수 목록을 인쇄하는 방법이 있습니까? 나는 다른 곳의 지표에 사용 된 변수를 보지 못했기 때문에 전체적인 생각을 좀 더 완전히 감싸려고 노력하고 있습니다. 감사! –
나는 JANUARY = 0, FEBRUARY = 1' 등의 할당을 이해하는 동안 혼란이 어디에 남아 있는지 추측한다. 왜 나중에 '범위 내에서 (12)'라고 말하는 지 이해할 수 없다 : 나는 그들을 참조하고있다. 변수 및 정수가 아니라 정상적으로. 나는 왜 JANUARY = 0을 얻었지만, 0 = JANUARY라면, 왜 우리는 'w in range (4)'라고 말할 때이 갈등을하지 않습니까? 이 정보가 저장되는 위치를 파악하는 데 어려움을 겪고 있습니다. 이 코드의 끝 부분에'print (list (range (12)))'를 추가하면, 여전히 정수를 얻습니다. 왜 이것이 한 인스턴스에서 변수 집합을 참조하지만 다른 인스턴스는 참조하지 않습니까? –