Windows · Python 3.12.4. 본문의 첫 예제를 실행하여 표준 출력과 예상 결과가 일치함을 확인했습니다. 연습문제의 모든 입력을 검증한 것은 아닙니다.
이 글의 순서 4개 단락
여러 식물의 이름을 따로따로 변수에 저장하면 이름이 늘어날 때마다 변수를 더 만들어야 합니다. 리스트를 사용하면 여러 이름을 한 변수에 순서대로 담고, 필요한 위치의 값이나 일부 범위를 꺼낼 수 있습니다. 이 강의의 예제는 Python 3.12를 기준으로 합니다.
리스트에 식물 이름 추가하기
리스트는 대괄호 [] 안에 값을 쉼표로 구분해 만듭니다. 각 값은 요소라고 부릅니다. []는 요소가 없는 빈 리스트입니다. 리스트 뒤에 .append(값)을 쓰면 그 값이 리스트의 끝에 추가됩니다.
다음 코드는 식물 이름 세 개를 한 줄에 하나씩 입력받아 저장합니다. 입력 순서에서 첫 번째 이름, 앞의 두 이름, 정렬한 이름을 차례로 살펴봅니다.
plants = []
for i in range(3):
name = input()
plants.append(name)
print("첫 번째:", plants[0])
print("앞의 두 개:", plants[0:2])
print("정렬 결과:", sorted(plants))
print("원래 순서:", plants)

입력은 다음처럼 세 줄입니다.
튤립
장미
국화
예상 출력은 다음과 같습니다.
첫 번째: 튤립
앞의 두 개: ['튤립', '장미']
정렬 결과: ['국화', '장미', '튤립']
원래 순서: ['튤립', '장미', '국화']
input()은 입력한 한 줄을 문자열로 돌려줍니다. 반복문이 세 번 실행되는 동안 append가 이름을 하나씩 추가하므로 plants에는 입력한 순서가 남습니다. 리스트를 print로 출력하면 대괄호와 문자열의 따옴표도 함께 표시됩니다.
위치와 범위로 값 꺼내기
리스트에서 요소의 위치를 나타내는 숫자를 인덱스라고 합니다. 첫 번째 요소의 인덱스는 0이므로 plants[0]은 튤립입니다. 두 번째와 세 번째 요소는 각각 plants[1], plants[2]로 꺼냅니다.
plants[0:2]처럼 콜론으로 시작과 끝을 지정하는 방법을 슬라이싱이라고 합니다. 시작 인덱스 0은 포함하지만 끝 인덱스 2는 제외하므로, 인덱스 0과 1에 있는 튤립과 장미가 새 리스트로 선택됩니다.
sorted(plants)는 이름을 오름차순으로 정렬한 새 리스트를 반환합니다. 이 예제에서는 문자열의 문자 순서에 따라 국화, 장미, 튤립 순서가 됩니다. sorted는 plants 자체를 정렬하지 않으므로 마지막 출력에는 입력 순서가 그대로 나타납니다. 정렬 결과를 나중에 다시 쓰려면 ordered = sorted(plants)처럼 변수에 저장할 수 있습니다. Python 3.12 리스트 튜토리얼, sorted 공식 문서
흔한 실수와 경계 조건
- 첫 번째 요소를
plants[1]로 꺼내면 두 번째 이름이 나옵니다. 인덱스가 0부터 시작한다는 점을 확인하세요. plants[0:2]에는 인덱스 2의 요소가 들어가지 않습니다. 세 요소를 모두 선택하려면plants[0:3]을 사용할 수 있습니다.- 빈 리스트에서
plants[0]을 읽거나, 세 요소가 있는 리스트에서plants[3]을 읽으면 해당 위치가 없어IndexError가 발생합니다. 반면 빈 리스트를plants[0:2]처럼 슬라이싱하면 오류 없이 빈 리스트가 나옵니다. sorted(plants)만 호출하고 결과를 저장하지 않으면 정렬된 새 리스트를 나중에 사용할 수 없습니다. 원래 리스트는 그대로입니다.- 이 예제는 입력 내용을 검증하지 않습니다. 빈 줄을 입력하면 빈 문자열도 리스트에 추가됩니다. 같은 이름을 여러 번 입력하면 각각 별도의 요소로 저장됩니다.
연습과 풀이
다음 리스트에 "민트"를 추가한 뒤, 두 번째와 세 번째 요소를 슬라이싱해 출력해 보세요. 이어서 정렬된 결과와 원래 리스트도 각각 출력하세요.
plants = ["장미", "국화"]
plants.append("민트")
print(plants[1:3])
print(sorted(plants))
print(plants)
예상 출력:
['국화', '민트']
['국화', '민트', '장미']
['장미', '국화', '민트']
append 후 인덱스 1과 2에는 국화와 민트가 있습니다. 슬라이스의 끝인 3은 제외됩니다. sorted의 결과는 이름 순서로 정렬되지만, 원래 리스트에는 추가한 순서가 유지됩니다.
CHECK THE SOURCE
참고한 공식 문서
기능 설명은 위 문서를 참고했으며, 예제의 입력·결과와 한계는 본문에 따로 기록했습니다.