Q : 숫자 리스트 num과 1~5의 코드를 실행한 후 나온 결과가 아래와 같을 때, 다음 보기 중 1~5에 들어갈 코드로 적절하지 않은 것을 고르세요.
num = [2, 3, 5, 7 ,9, 11, 13, 17]
1. num[:-1] = "prime number"
2. num[5:6] = '23'
3. num[14:] = [57]
4. num[0] = [1]
5. print(num)
[1, 'r', 'i', 'm', 'e', '2', '3', 'n', 'u'. 'm', 'b', 'e', 'r', 17, 57]
답 : 4번
<실습 문제>
주어진 numbers 리스트를 다음 내용에 따라 수정 및 삭제하기.
numbers = [10, 24, 52, 6, 30, 15, 2, 19, 27, 22]
numbers[0] = 40
결과 : [40, 24, 52, 6, 30, 15, 2, 19, 27, 22]
numbers[5] = 'hello'
결과 : [40, 24, 52, 6, 30, 'hello', 2, 19, 27, 22]
numbers[2:4] = 'big'
결과 : [40, 24, 'b', 'i', 'g', 30, 'hello', 2, 19, 27, 22]
numbers[2:7] = []
결과 : [40, 24, 2, 19, 27, 22]
append() : 리스트 맨 마지막 인덱스에 새로운 값을 추가
color = ['red', 'blue', 'green']
color.append('white’) # 리스트에 ‘white’ 추가
#결과 ['red', 'blue', 'green', 'white']
extend() : 값을 추가하는 것이 아닌 기존 리스트에 그대로 새로운 리스트를 합치는 기능
color = ['red', 'blue', 'green']
color.extend(['black', 'purple’]) # 리스트에 새로운 리스트 추가
#결과 ['red', 'blue', 'green', 'black', 'purple'
insert() : append() 함수와 달리 리스트의 특정 위치에 값을 추가
color = ['red', 'blue', 'green']
color.insert(0, 'orange')
#결과 ['orange', 'red', 'blue', 'green']
remove() : 리스트에 있는 특정 값을 지우는 기능
color = ['orange', 'red', 'blue', 'green']
color.remove('red')
#결과 ['orange', 'blue', 'green']
del [] : 특정 인덱스값을 삭제
color = [1, 2, 3, 4, 5]
del color[0]
pop() : 리스트의 마지막 데이터를 변환한 뒤 삭제
sort() : 리스트 요소를 오름차순으로 정렬
reverse() : 리스트의 순서를 반대로 전환 (내림차순)
index(x) : 리스트에서 x를 찾아 인텍스 값 반환
count(x) : 리스트에 있는 x갑 개수 반환
주어진 리스트 mylist에서 길이가 3인 부분집합만 출력하는 코드를 작성하세요.
mylist = [[1, 2, 3], [4, 5, 6, 7], [8, 9, 10], [11, 12]]
for i in range(len(mylist)):
if len(mylist[i]) == 3:
print(mylist[i])
t = [1, 2, 3]
a, b, c = t
printf(t, a, b, c) #[1, 2, 3] 1 2 3
패킹 : 한 변수에 여러 개의 데이터를 할당하는 그 자체로 리스트 자체
언패킹 : 한 변수에 여러 개의 데이터가 들어있을 때 그것을 각각의 변수로 반환하는 방법

Q : 위의 표와 같은 이차원 리스트를 하나의 변수로 표현하기
kor_score = [49, 79, 20, 100, 80]
math_score = [43, 59, 85, 30, 90]
eng_score = [49, 79, 48, 60, 100]
midterm_score = [kor_score, math_score, eng_score]
print(midterm_score)
결과 : [[49, 79, 20, 100, 80], [43, 59, 85, 30, 90], [49, 79, 48, 60, 100]]
a = 300
b = 300
>>> a is b
False
>>> a == b
True
==으로 비교하면 Ture인데, is로 비교하면 False가 나오는 이유
→==은 값을 비교하는 연산이고, is는 메모리 주소를 비교하는 연산이기 때문입니다.
파이썬에서 -5~256까지의 정수값은 특정 메모리 주소에 저장하고 해당 숫자를 할당하려고 할 때 해당 변수는 그 숫자가 가진 메모리 주소로 연결합니다.
<리스트의 저장 방식>
a = [5, 4, 3, 2, 1]
b = [1, 2, 3, 4, 5]
b = a
print(b)
결과 : [5, 4, 3, 2, 1]
b와 a변수를 각각 다른 값으로 선언한 후 b에 a를 할당하고 b를 출력하면 a변수와 같은 값이 화면에 출력됩니다.
여기서 a만 정렬하고 b를 출력하게 된다면?
a.sort()
print(b)
결과 : [1, 2, 3, 4, 5]
b = a를 입력하는 순간 b에도 a 리스트의 메모리 주소가 저장되기 때문입니다.
<마무리 과제>
XOOXOXOXOX와 같은 OX퀴즈의 결과를 입력하고, 문제를 맞은 경우 그 문제의 점수는 그 문제까지의 연속된 O의 개수가 됩니다. 이와 같은 OX퀴즈 프로그램을 작성하세요.
answer = [ ]
answer[0:1] = input('')
total = 0
current = 1
now = 0
for i in range(len(answer)):
if answer[now] == 'O':
total += 1 * current
current += 1
now += 1
elif answer[now] == 'X':
total += 0
now += 1
current = 1
print(total)