리스트 개념 문제 풀이

파이썬 리스트 예제 연습 정리 (결과 포함)

리스트(List), 인덱스(index), len(), index(), range() 함수까지 예제와 실행 결과를 함께 정리해봅니다.

1. 평일 / 주말 리스트 만들기

weekday = ['월','화','수','목','금']
weekend = ['토','일']

print("평일은", weekday, ",주말은", weekend)
출력 결과 → 평일은 ['월', '화', '수', '목', '금'] ,주말은 ['토', '일']

2. 다양한 자료형을 하나의 리스트에 담기

list_a = ['ac', 24, 3.02, True, False, ["wow", "test", 100]]

print(list_a)
출력 결과 → ['ac', 24, 3.02, True, False, ['wow', 'test', 100]]

리스트 안에는 문자열, 정수, 실수, 불리언, 또 다른 리스트도 함께 넣을 수 있습니다.


3. 빈 리스트의 boolean 판별

list_1 = []
print(bool(list_1))
출력 결과 → False

빈 리스트는 값이 없기 때문에 False로 판별됩니다.


4. 이름과 나이 리스트 만들기

name = ['민준','서준','도윤','예준','시우','하준','주원','지호']
old = [22,32,11,52,31,73,21,14]

print("학생 이름은", name)
print("나이는", old)
출력 결과 → 학생 이름은 ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']
출력 결과 → 나이는 [22, 32, 11, 52, 31, 73, 21, 14]

5. 영화 정보 리스트 만들기

rank = [1, 2, 3, 4, 5, 6]
name = ["범죄도시3", "가디언즈 오브 갤럭시: Volume 3", "포켓 몬스터 DP: 아르세우스 초극의 시공으로", "분노의 질주: 라이드 오어 다이", "인어공주", "슈퍼 마리오 브라더스"]
openday = ["2023.05.31", "2023.05.03", "2009.12.24", "2023.05.17", "2023.05.24", "2023.04.26"]
aud = [2817238, 91092, 71834, 66678, 65486, 23776]
sales = [28691377096, 948372092, 673827181, 679037060, 658858972, 235181685]

print("순위 :", rank)
print("영화명 :", name)
print("개봉일 :", openday)
print("관객수 :", aud)
print("매출액 :", sales)
출력 결과 → 순위 : [1, 2, 3, 4, 5, 6]
출력 결과 → 영화명 : ['범죄도시3', '가디언즈 오브 갤럭시: Volume 3', '포켓 몬스터 DP: 아르세우스 초극의 시공으로', '분노의 질주: 라이드 오어 다이', '인어공주', '슈퍼 마리오 브라더스']
출력 결과 → 개봉일 : ['2023.05.31', '2023.05.03', '2009.12.24', '2023.05.17', '2023.05.24', '2023.04.26']
출력 결과 → 관객수 : [2817238, 91092, 71834, 66678, 65486, 23776]
출력 결과 → 매출액 : [28691377096, 948372092, 673827181, 679037060, 658858972, 235181685]

6. 인덱스로 리스트 요소 접근하기

lst_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']

print(lst_name[0])
출력 결과 → 민준

* 리스트의 첫 번째 요소는 인덱스 0으로 접근합니다.


7. 인덱스를 활용한 계산

flt = 2.1
num = 4

lst_nums = [3.14, 10, 5, flt, num]

print(lst_nums[1] * num)
print(lst_nums[0] * lst_nums[3])
출력 결과 → 40
출력 결과 → 6.594

8. len() 함수로 길이 구하기

print(len("hello py"))
print(len([11, 22, 33, 44, 55, 66]))

lst = [11, 22, 33, 44, 55, 66]
lst_cnt = len(lst)
last_idx = len(lst) - 1

print(lst_cnt)
print(f"{lst=} 리스트의 길이는 {lst_cnt}, 마지막 인덱스는 {last_idx}입니다.")
출력 결과 → 8
출력 결과 → 6
출력 결과 → 6
출력 결과 → lst=[11, 22, 33, 44, 55, 66] 리스트의 길이는 6, 마지막 인덱스는 5입니다.
  • len()은 문자열 길이와 리스트 길이를 모두 구할 수 있습니다.
  • 마지막 인덱스는 길이 - 1 입니다.

9. index() 함수로 위치 찾기

list_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']

name = '시우'
pos = list_name.index(name)

print(f'{name} 학생은 {pos+1}번 입니다.')
출력 결과 → 시우 학생은 5번 입니다.

인덱스는 0부터 시작하므로, 실제 순서를 표시할 때는 +1을 해줍니다.


10. index() 시작 위치 지정하기

lst_age = [22, 33, 55, 11, 22, 33, 66]

age = 22

pos = lst_age.index(age, 0)
print(f"{age}살 학생의 번호는 {pos+1}입니다.")

pos = lst_age.index(age, 3)
print(f"{age}살 학생의 번호는 {pos+1}입니다.")
출력 결과 → 22살 학생의 번호는 1입니다.
출력 결과 → 22살 학생의 번호는 5입니다.

index(찾을값, 시작위치) 형태로 쓰면 특정 위치 이후부터 값을 찾을 수 있습니다.


11. 리스트 값 변경하기

lst_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']
name = '시우'
pos = lst_name.index(name)

lst_name[pos] = 'Richard'

print(lst_name)
출력 결과 → ['민준', '서준', '도윤', '예준', 'Richard', '하준', '주원', '지호']

index()로 위치를 찾은 뒤, 그 위치의 값을 다른 문자열로 바꿀 수 있습니다.


12. 여러 리스트 길이 구하기 와 특정 학생 정보 출력

n = ['민준','서준','도윤','예준','시우','하준','주원','지호']
o = [22,32,11,52,31,73,21,14]
h = [176,180,161,171,190,165,170,169]
w = [77,88,65,85,100,70,67,59]

print(len(n), len(o), len(h), len(w))
print("------------------------------")

print("이름:", n[1], ",", n[4])
print("나이:", o[1], ",", o[4])
print("키:", h[1], ",", h[4])
print("몸무게:", w[1], ",", w[4])
출력 결과 → 8 8 8 8
------------------------------
출력 결과 → 이름: 서준 , 시우
출력 결과 → 나이: 32 , 31
출력 결과 → 키: 180 , 190
출력 결과 → 몸무게: 88 , 100

13. 학생 번호로 성적 평균 구하기

k = [55, 87, 43, 98]
e = [65, 80, 77, 91]
m = [91, 67, 77, 89]

number = int(input("학생의 번호를 입력하세요(오직 숫자만 입력):"))
index = number - 1

print("총 성적평균:", ((k[index] + e[index] + m[index]) / 3))
실행 예시 → 학생의 번호를 입력하세요(오직 숫자만 입력): 1
출력 결과 → 총 성적평균: 70.33333333333333

입력한 학생 번호에서 1을 빼서 리스트 인덱스로 변환한 뒤 평균을 계산합니다.


14. 과목 평균 구하기

k = [55, 87, 43, 98]
e = [65, 80, 77, 91]
m = [91, 67, 77, 89]

want = input("평균을 알고싶은 과목을 입력하세요:")

if want == "국어":
    print("국어 평균:", sum(k) / len(k))
elif want == "영어":
    print("영어 평균:", sum(e) / len(e))
elif want == "수학":
    print("수학 평균:", sum(m) / len(m))
실행 예시 → 평균을 알고싶은 과목을 입력하세요: 영어
출력 결과 → 영어 평균: 78.25

15. 태양계 행성 위치 찾기

g = ["태양","수성","금성","지구","화성","목성","토성","천왕성","해왕성","지구"]

s = input(f"{g} 중에 위치를 확인 할 행성은 어디인가요?:")
g_list = g.index(s)

if s in g:
  print(f"{s} 행성은 {g[0]}에서 {g_list} 번째에 위치하고 있습니다.")
실행 예시 → 해왕성 입력
출력 결과 → 해왕성 행성은 태양에서 8 번째에 위치하고 있습니다.

리스트에서 입력한 행성의 위치를 index() 함수로 찾을 수 있습니다.


16. 화성과 해왕성 이름 바꾸기

g = ["태양","수성","금성","지구","화성","목성","토성","천왕성","해왕성","지구"]

g[g.index("화성")] = "Mars"
g[g.index("해왕성")] = "Neptune"

print(g)
출력 결과 → ['태양', '수성', '금성', '지구', 'Mars', '목성', '토성', '천왕성', 'Neptune', '지구']

17. 슬라이싱 예제

lst_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']

print(lst_name[0:4:1])
print(lst_name[0:6])
print(lst_name[:8])
print(lst_name[:8:2])
출력 결과 → ['민준', '서준', '도윤', '예준']
출력 결과 → ['민준', '서준', '도윤', '예준', '시우', '하준']
출력 결과 → ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']
출력 결과 → ['민준', '도윤', '시우', '주원']
  • [시작:끝:증감] 형태로 슬라이싱합니다.
  • 끝 인덱스는 포함되지 않습니다.

18. range()로 -10부터 10까지 리스트 만들기

list_method1 = list(range(-10, 11, 1))
list_method2 = list(range(-10, 11))
list_method3 = [i - 10 for i in range(21)]

print(list_method1)
print(list_method2)
print(list_method3)
출력 결과 → [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
출력 결과 → [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
출력 결과 → [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

19. 3의 배수 5개가 포함된 리스트

list_r = list(range(3, 18, 3))

print(list_r)
출력 결과 → [3, 6, 9, 12, 15]

20. 3씩 증가하는 정수 10개 출력

n = int(input("정수를 입력하세요: "))
result = list(range(n, n + 3 * 10, 3))

print(result)
실행 예시 → 정수를 입력하세요: 5
출력 결과 → [5, 8, 11, 14, 17, 20, 23, 26, 29, 32]

21. 입력값만큼 증가하는 리스트 만들기

m = int(input("정수를 입력하세요:"))
re = list(range(0, m * m, m))

print(re)
실행 예시 → 정수를 입력하세요: 8
출력 결과 → [0, 8, 16, 24, 32, 40, 48, 56]

입력한 수가 8이면 8씩 증가하면서 총 8개의 요소가 만들어집니다.


22. 입력한 숫자의 구구단 출력

m = int(input("정수를 입력하세요:"))
max = 10

lst = list(range(m, (max * m), m))

print("(m)단 출력:", lst)
실행 예시 → 정수를 입력하세요: 5
출력 결과 → (m)단 출력: [5, 10, 15, 20, 25, 30, 35, 40, 45]

입력한 수를 시작값과 증가값으로 사용하면 해당 숫자의 구구단 결과를 리스트로 만들 수 있습니다.


23. 핵심 정리

  • 리스트는 여러 개의 값을 한 번에 저장하는 자료형입니다.
  • 인덱스는 0부터 시작합니다.
  • len()은 길이를 구할 때 사용합니다.
  • index()는 값의 위치를 찾을 때 사용합니다.
  • 찾은 인덱스를 이용해서 리스트 값을 수정할 수 있습니다.
  • range()는 일정한 규칙의 숫자 리스트를 만들 때 유용합니다.
  • 코드와 실행 결과를 함께 보면 개념을 훨씬 쉽게 이해할 수 있습니다.

리스트와 range() 함수는 파이썬 기초에서 아주 자주 사용됩니다. 여러 예제를 직접 실행해보면서 인덱스와 반복 규칙에 익숙해지는 것이 중요합니다.