-
왔다네 왔다네 내가 왔다네
(이걸 안다면 흐음..)
자, 오늘은
Part1. 딥러닝을 시작하기전에
CH03-06. 파이썬(Python)리스트 자료형과 튜플 자료형
&
CH03-07. 파이썬(Python)사전 자료형과 집합 자료형
CH03-06. 파이썬(Python) 리스트 자료형과 튜플 자료형
프로그램을 작성할 때 한 두개의 변수만 사용하는 것이 아니라 매우 많의 양의 변수를 다루어야 할 수 있다.
리스트란?
"자료들의 모음집, 리스트를 알고 싶다면 지난번 강의를 보면 된다."
리스트는대괄호 안에 원소들을 쉼표로 구분하여 넣을 수 있다.
odds = [ 1,3, 5, 7, 9]
print(odds)
→ [ 1, 3, 5, 7, 9] // 답이 중요한게 아니라 저렇게 "[" 랑 "]" 사이에 값을 쉼표로 넣어버리면 바로 리스트 되는 것이다.
특징1. 리스트 안에는 서로 다른 자료형의 데이터가 들어갈 수 있다.
data = [1, 0.5, "짬뽕"] ← 정수형, 실수형, 문자형 다 위아더 월드로 들어가도 문제 없다는 말.
print(data)를 해도 오류가 안난다는 말!
특징2. 리스트에 대해서 인덱싱과 슬라이싱을 쓸 수 있다.
evens = [ 2, 4, 6, 8, 10, 12, 14, 16, 18]
print(evens[3])
print(evens[:5])
→ 8
→ [2, 4, 6, 8, 10]
(지난번에도 글을 적었지만 :5 까지면 -1인 0부터 0번째, 1번째, 2번째, 3번째, 4번째인 10까지 가는것이다.)
특징3. 리스트 끼리 더할 수 있다.
a = [1,2,3,4,5] b=[6,7,8,9,10]
print(a+b) = [1,2,3,4,5,6,7,8,9,10]
특징4. 다중으로 중첩하여 사용할 수 있다.
이중 포문에서 본 것처럼 리스트 안에 원소 자체가 리스트일 수 있다.
arr = [
[1,2,3,4,5] ←1행
[6,7,8,9,10] ←2행
[11,12,13,14,15] ←3행
]
print(arr)
→ [[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15]
print(arr[0][1])
→ 2
print(arr[2][2])
→ 13
자 [행] [열] 이렇게 구성되는데, [0][1]을 찾아보자면.... 첫번째 줄, 두번째 값인 2를 가져온다.
(왜냐묘는 인덱스는 0부터 시작하기 떄문에 0이면 첫번째 행, 1이면 2번째 원소 이기 때문이다.)
벡터나 수열에 엄청 중요하고.... 특히 텐서의 가장 기초기초기초 니까 꼭 이해해두도록 하자.
특징5. 문자열은 불변객체 이지만, 리스트는 가변 객체다.
쉬운말로, 리스트 내 원소들을 다른 값으로 대체할 수 있다는 말이다.
a = [5,6,7,8,9]
a[4] = 5 ← a의 인덱스 4, 그러니까 5번째 자료를 5로 바꿔버려라
print(a)
→ [5,6,7,8,5]
a[1:4] = [4,3,2] ← a의 인덱스 1부터 3까지, 즉 6,7,8 이란 값을 4,3,2로 대체하라
print(a)
→ [5,4,3,2,5]
(마지막 5는 a라는 변수에 지금 5라는 값을 아까 방금 넣었으니 그대로 갖고있는거다)

특징 6. insert, append, remove, sort 같은 것도 있다. 특징6. 추가 메서드
arr = [] ← 빈 껍데기의 리스트 객체 생성
for x in range(10): ← x에 대해 0~9번 까지 아래를 수행하라
arr.append(x) ← arr에 값을 넣어라.
특징6. 2차원 이상의 리스트를 초기화 할때는 컴프리헨션을 사용한다.
arr = [5]* 8
print arr
→ [5,5,5,5,5,5,5,5]
# 4x5 크기를 갖는 2차원 리스트 초기화
arr = [[0]*5 for _ in range(4)]
→[[0,0,0,0,0],[0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]
arr = [[i]*5 for i in range(4)] ←i가 0~3번 동안 i에 대해 [i]만큼 나열하라.
[[0,0,0,0,0], [1,1,1,1,1], [2,2,2,2,2], [3,3,3,3,3]]
arr = [[(i*5)+j for j in range(5)] for i in range(4)]
→ 바깥쪽 포문( for i in range(4)) 즉, 안에 것을 4번 반복하라. i 값은 0 부터 3까지 그니까 총 4묶음이 생긴다.
안쪽 포문 [(i*5)+j for j in range(5)] 여기서 (i*5)+j 이걸 5번 반복하라. j 값은 0부터 4까지 그니까 총 5개가 생긴다.
아우, 말이 너무 어렵다. 쉽게 한줄로 다시 표현하자면,
(i*5)+j 이걸 5번 반복한 걸 총 4번 반복하라.
(i*5)+j 이걸 5번 반복한 걸 ← 이게 한 묶음,
총 4번 반복하라. ←이게 전체 한묶음
▶ 지하철에서 산 델리만쥬 한박스에 낱개 포장으로 4박스가 들어가는데 1박스에 5개가 들어가더라.
→[[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14],[15,16,17,18,19]]
튜플자료형
리스트 자료형과 유사하지만, 특징이 다르다.
리스트는 [] 대괄호지만, 튜플은 () 이고, 튜플은 값을 변경할 수가 없다.
즉, 값을 변경하면 안되믄 () 튜플을 쓴다.
또한, 관행적으로 데이터의 성질이 다른 것들을 묶을 때 보통 튜플을 쓴다.( 그말인 즉슨, 리스트는 원래 비슷한 애들끼리 묶는다는 말이겠죵?) (예시: 비용, 노드번호)
CH03-07. 파이썬(Python) 사전 자료형과 집합 자료형
사전이 일 사(事) 앞 전 前) 이 아니라 딕셔너리 사전이다. 네,
사전 자료형이란?
"사전처럼 특정한 원소의 존재 여부를 사전에서 단어 찾는 것처럼 빠르게 확인하고 추가/삭제도 할 수 있다."
그래서 어떻게 쓰는건데요?
데이터를 키(Key)와 값(value) 쌍 형태로 저장할 때 사용할 수 있다.
(예: 보통 우리가 짬뽕 이라는 단어를 찾을 때 자음 'ㅉ'을 찾는 것처럼, 여기선 'ㅉ'가 키가 된다는 개념)
사전데이터[키] = 값
arr1 = ["컴퓨타", "키보드", "모니터"]
arr2 = ["Computer", "Keyboard", "Monitor"]
data = {} ← data라는 '비어있는' 변수 바구니를 하나 만들자.
for i in range(3):
data[arr1[i]] = arr2[i]
print(data)
자, i가 0이다.
data[ arr[0]] = arr2[0],
사전데이터[키] = 값
위의 내용에 따라 arr[0] 인 컴퓨타 라는 키(key) 에, arr2[0]인 'Computer' 가 들어간다는 말이다.
data는 {'컴퓨타' : 'Computer', '키보드' : 'Keyboad', '모니터' : 'Monitor'}
그래서 어떻게 쓰는건데요2
data = {} ← 데이터라는 이름을 가진 사전을 만들고,
data['apple'] = "사과" ← 데이터라는 이름을 가진 사전안에 apple 이라는 키 값에 '사과'를 넣고
data['banana'] = "바나나" ← 데이터라는 이름을 가진 사전안에 바나나 이라는 키 값에 '바나나'를 넣고
data['carrot'] = "당근" ← 데이터라는 이름을 가진 사전안에 당근 이라는 키 값에 '당근'를 넣고
for key in data.key(): ← key를 전체를 돌면서,
print("key:", key, ", value: ", data[key]) ← 각 키와 키에 들어가는 값을 뽑아라.
그래서 어떻게 쓰는건데요3
data = [1,3,3,5,4,3,1,4]
counter = {}
for X in data: ← X 를 내가 data 안에서 찾을 건데,
if X not in counter : ← X가 만약에 counter, 즉 counter 라는 이름의 사전에 없으면,
counter[X] = 1 ← 사전에 X라는 키에 1이라는 값을 넣고(신규로 등록)
else:
counter[x] += 1 ← 그르치 않으면(이미 등록된 key) X라는 키에 숫자를 1씩 더해라.
print(counter)
즉, 각 숫자가 몇개씩 있는지 확인하는 코드. 유용하겠쥬?
마지막으로, 집합 자료형(Set)
강의가 6분이라서 별거 없을 줄 알았는데, 진짜 중요한게 자아아아아안뜩 나오는구나....
집합 자료형이란?
데이터의 중복을 허용하지 않고, 순서가 상관없을 때 사용하는 자료형.
즉, 중복을 허용하지 않으므로 등장한적 있는지 체크할 때 효과적이다.
그래서 어떻게 쓰는건데요4
data = [1,3,3,5,4,3,1,4]
visited = set()
for x in data:
if x not in visited :
visited.add(x)
else:
print("중복 원소 발견: ", x)
print("고유한 원소들:", visited)
이제 어떤지 읽으면 아실 것이다. data 안에서 엑스가 / 만약 x가 집합자료형인 visited에 없으면 /
visited에 add 메서드를 통해 사전 처럼 원소를 집어 넣고 /
그렇지 않다면(이미 비지티드에 x라는 원소가 있으면) / 중복된 원소 발견이라 외치며 그 원소를 출력한다.
위에서 본 것처럼, add 매서드를 통해 원소를 넣을 수있고
반대로 제거할 때는 remove() 메서드를 써보자.
마지막으로 집합자료형은 합집합( \) 교집합(&), 차집합(-) 이 가능하다.

7일차 끝.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
'패스트캠퍼스 챌린지' 카테고리의 다른 글