HOWTO · Python
Python에서 for 루프를 1부터 시작하는 방법
range()로 1부터 세는 방법, enumerate()로 항목에 1부터 번호를 붙이는 방법, 슬라이싱으로 첫 항목을 건너뛰는 방법을 Python에서 배웁니다. 숫자 루프 값에는 range()를, 표시용 번호에는 enumerate()를, 항목 선택에는 슬라이싱을 사용하세요. Python 리스트 인덱스는 0부터 시작하는 그대로입니다.
이 페이지의 내용
Python 루프에서 n까지 1부터 세려면 range(1, n + 1)을 사용하세요. Python의 range()는 시작값은 포함하고 끝값은 포함하지 않으므로, 끝값에 1을 더하면 n까지 셉니다. 이렇게 하면 루프가 만드는 숫자만 바뀌며 목록의 인덱스는 바뀌지 않습니다. 항목을 화면에 표시할 번호를 붙이거나 첫 항목을 건너뛰려면 대신 enumerate()나 슬라이스를 사용하세요. 이 후보의 예제는 실행되었으며, 동작은 제공된 런타임 결과로 확인되었습니다.
range()로 숫자 루프를 1부터 시작하기
range()의 시작값을 1로 지정하고, 끝값은 마지막 숫자보다 1 크게 설정하세요. 예를 들어 다음 루프는 1부터 5까지 셉니다.
n = 5
for number in range(1, n + 1):
print(number)
1
2
3
4
5
첫 번째 인수는 시작 숫자이고 두 번째 인수는 포함되지 않는 끝값입니다. 따라서 range(1, 6)은 1, 2, 3, 4, 5를 만듭니다. 마지막 숫자를 바꾸려면 n을 다른 값으로 바꾸고, 시작 숫자를 바꾸려면 1을 바꾸세요. 세 번째 인수로 간격도 지정할 수 있습니다. 예를 들어 range(1, n + 1, 2)는 2씩 증가하며 셉니다. range()를 감싸는 사용자 정의 헬퍼 함수로 이 조정을 재사용할 수 있지만, 루프 하나에만 쓸 때는 필요하지 않습니다. 각 값에 1을 더하는 제너레이터 표현식도 값을 조정하는 방법이지만, 이 숫자 세기 작업에는 range()를 직접 쓰는 편이 더 명확합니다.
enumerate()로 항목에 1부터 번호 붙이기
항목을 처리하면서 각 항목의 위치를 독자에게 표시하려면 enumerate(items, start=1)을 사용하세요. 반복할 때마다 번호와 해당 항목을 함께 돌려줍니다.
items = ["a", "b", "c"]
for number, item in enumerate(items, start=1):
print(number, item)
1 a
2 b
3 c
여기서 number는 화면에 표시할 번호 1, 2, 3을 차례로 받고, item은 각 목록 값을 받습니다. start=1 인수는 enumerate()가 반환하는 번호를 바꾸지만, 목록 자체의 인덱스는 바꾸지 않습니다. 인덱스는 여전히 0부터 시작합니다. 이 방식은 이름 목록이나 행에 사람이 읽기 쉬운 서수를 붙이는 등 번호가 매겨진 결과를 보여줄 때 유용합니다. Python 인덱스로 항목에도 접근해야 한다면 표시 번호가 해당 인덱스보다 1 크다는 점을 기억하고, 코드에서 두 개념을 구분하세요.
첫 항목을 건너뛰려면 슬라이싱 사용하기
첫 번째 목록 값 뒤에 있는 모든 항목을 처리하려면 items[1:] 슬라이스를 반복하세요.
items = ["header", "first", "second"]
for item in items[1:]:
print(item)
first
second
슬라이스는 인덱스 1부터 시작하므로 이 루프는 "first"와 "second"를 방문하고 원래 목록은 그대로 둡니다. 슬라이싱은 값에 새 번호를 붙이지 않고 루프가 받을 값만 선택합니다. 목록을 슬라이싱하면 선택한 항목을 참조하는 새 목록이 만들어집니다. 모든 항목을 세거나 번호를 매기는 것이 아니라 첫 값이 제목이어서 처리 대상에서 빼려는 경우에 이 방법을 사용하세요.
작업에 맞는 방법 선택하기
루프가 1부터 n까지의 숫자를 직접 만들어야 한다면 range(1, n + 1)을 사용하세요. 모든 항목을 방문하면서 각 항목 옆에 1부터 시작하는 번호를 표시하려면 enumerate(items, start=1)을 사용하세요. 반복 대상에서 첫 항목을 제외하려면 items[1:]을 사용하세요. 이 방법들은 각각 생성되는 숫자 바꾸기, 표시용 번호 붙이기, 컬렉션의 일부 선택이라는 서로 다른 작업을 해결합니다.
간격이 1일 때는 마지막 정수를 포함하도록 포함되지 않는 끝값을 그 정수보다 1 크게 설정하세요. 간격이 다를 때는 수열이 의도한 마지막 값에 정확히 도달해야 하며, 포함되지 않는 끝값은 진행 방향으로 그 값보다 뒤에 있어야 합니다. 1을 더하는 것은 일반적인 포함 규칙이 아닙니다. enumerate()가 1부터 시작하는 표시 번호를 제공해도 Python 목록 인덱스는 0부터 시작합니다. 필요한 결과에 맞는 가장 간단한 방법을 선택하고, 예제를 응용할 때 숫자 루프 값, 표시 번호, 목록 인덱스를 서로 구분하세요.