09:00 in
20:33 out
short diary
-TIL 적어놓은 게 증발했다.....짬 나는대로 다시 적어놓자.
-하루 10~12시간은 코딩에 투자해라.
-코드치는 절대 시간이 중요하다.
-첫 날 대표님이 하신 말.
-저걸 지키기 위해 교육기간에 (불가피한 일이 없는 이상) 최소한 위코드 10~12시간 이상 머무르기로 정하고 첫 날 부터 in n out 시간 기록중이다.
-한 문제를 풀기 위해 한 시간 넘게 while, if, elif, continue, break 등 온갖 아는 것 다 써가면서 씨름했다. 겨우겨우 통과한 후 mentor님이 써놓은 정답 코드를 봤더니, while하나 쓰고 딱 4줄이었다. 뒤통수를 맞은 듯 하다.
효율적으로 압축된 고수의 코드와 비효율의 극을 달리는 나의 코드.
-결론은 replit문제 푼 다음 mentor님들이 작성해놓은 코드를 꼭 읽어야 한다.
그거 읽으면서 배우는 게 엄청 크다.
오늘도 고생 많았다.
-list에 string, 숫자, boolean 등 모든 type저장 가능.
ex) random_values = [1, "two", True]
-list 값들은 순차적으로 저장된다, 순서(order)을 갖는다.
-순서를index라 하고 0~ n-1까지다.
append
리스트의 맨 뒤에 요소를 추가하는 기능.
아래는 예시.
a = [1,2,3]
a.append(4) #-> a = [1,2,3,4]
+(플러스 부호)
추가하고자 하는 element가 1개 이상일 때 사용.
[] 형태로 더해주어야 한다.
더한 리스트를 받아줄 변수가 필요하다.
a = [1,2,3]
a = a + [4,5] #-> a = [1,2,3,4,5]
insert
index를 이용해 원하는 위치에 element를 추가할 수 있다.
a = [1,2,3]
a.insert(0, 4) # -> a =[4,1,2,3]
Updating Elements
element를 새로운 값으로 대체할 수 있다.
a = [1,2,3]
a[0] = 4 # -> a=[4,2,3]
Deleting elements from list
twice = [ "나연", "사나", "정연", "모모", "미나", "채영", "다현", "쯔위", "지효"]
del
del은 인덱스로 지운다.
삭제 후 똑똑한 파이썬이 자동으로 인덱스를 정렬해준다.(사라진 칸 만큼 밀어서 빈 곳 채움)
del twice[0]
->twice = [ "사나", "정연", "모모", "미나", "채영", "다현", "쯔위", "지효"]
remove
remove는 element를 써서 지운다.
remove 는 리스트의 메소드다.
twice.remove("나연")
-> 나연만 지워진다.
문법
for element in list:
do_something_with_element
for문은 튜플, 리스트, set등 다른 자료구조와도 사용 가능하다.
-iteration
앞서 보았듯이 for 구문에서는 리스트가 가지고 있는 요소의 수 만큼 for 구문에 속해있는 코드를 실행합니다.
이걸 iteration 이라고 합니다. 만일 리스트가 5개의 요소를 가지고 있으면 5 iterations 이라고 합니다.
즉 5번 반복한다는 뜻이죠. 그래서 for loops를 한국어로 for 반복구문 이라고 하기도 합니다.
for문을 강제로 중단시키는 것.
break는 원치 않고, 단지 다음 iteration으로 넘어가고자 할 때
if문처럼 for문도 중첩해서 쓸 수 있다.
(질문: if 문은 2번 초과 중첩하면 안좋다고 배웠는데, for 문도 마찬가지인가?)
numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20, 30, 40, 50]
for num1 in numbers1:
for num2 in numbers2:
print(f"{num1} {num2} == {num1 num2}")
for 구문은 list나 set, dictionary 등의 data structure 등을 기반으로 코드블록을 반복 실행한다.
하지만 list같은 data structure 기반이 아니더라도 코드블록을 반복해야 할 때가 있다.
이럴 때 while 구문이 사용된다.
while 구문은 특정 조건문이 True일 동안 코드블록을 반복 실행한다.
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
<수행할 문장N>
예를 들어, 어떠한 특정 변수의 값의 초기 값이 0인데, 1씩 증가하여 10이 되기전까지 값의 변화를 출력하는 코드는 다음처럼 구현할 수 있다.
number = 0
while number <= 10:
print(number)
number += 1
결과
0
1
2
3
4
5
6
7
8
9
10
이렇게 list 같은 자료구조 없이도 반복구문을 실행할 수 있다.
질문.
굳이 while에 else를 써야하나?
else가 없어도 어차피 number는 while문 후에 11이되니, else 안에 담긴 내용을 else없이 써도 그만 아닌가?