java나 c를 알면 이제 프로그래밍 언어가 갖는 공통적인 특징들에 대해선 감이 온다. 마찬가지로 파이썬은 그 형태가 비슷하며, 심지어 더 단순하다. 앞으로 딥러닝을 다루기 위해서는 파이썬이 필수이기 때문에 다시 기억을 되살려보자.
- 기본 자료형
파이썬의 기본 자료형에는 정수(int), 소수(float), 문자열(str)이 있다. 각 데이터의 자료형은 type()함수로 알아볼 수 있다.
>>> type(10)
<class 'int'>
>>> type(3.1)
<class 'float'>
>>> type("a")
<class 'str'>
>>> type("apple")
<class 'str'>
추가로 bool이라는 자료형이 있다. 참, 거짓이라는 값을 가지며 and, or, not 아니면 등호, 부등호 연산자를 활용할 수 있다.
>>> happy = True
>>> sad = False
>>> happy and sad
False
>>> happy or sad
True
>>> not happy
False
>>> not sad
True
다음으로 넘어가기 전, str타입을 잠시 짚고 넘어가자. 파이썬에서는 slicing이 많이 사용되기 때문에 꼭 사용법을 올바르게 이해해야 한다.
a = 'helloworld!'
a[0]
'h'
a[0]
'h'
a[5]
'w'
a[-1]
'!'
a[-2]
'd'
a[5:]
'world!'
a[0:5] #0에서 5직전까지
'hello'
a[:]
'helloworld!'
a[::2] # 콜론 2개는 건너뛰기 -> 2step이니까 한칸씩 건너뛰기
'hlool!'
a[::-1] #step이 음수면 역정렬
'!dlrowolleh'
a[::-2] #역정렬인데 한칸씩 건너뛰기
'!loolh'
이 외에도 문자열 관련 함수를 알고 싶다면 아래 포스팅을 참고하자.
2021.07.05 - [1학년/Python] - 04. 문자열 함수
기본 자료형 외에도 리스트, 튜플, 딕셔너리, 셋과 같은 자료형이 존재한다.
- 리스트
파이썬에도 리스트가 있다. 리스트를 생성하는 방법은 2가지다.
>>> list1 = []
>>> list2 = list()
>>> a = [1,2,3]
>>> print(a)
[1, 2, 3]
>>> len(a)
3
>>> a[0]
1
편리하게도 파이썬에는 slicing이라는 기법이 있다. 슬라이싱은 리스트 안의 부분 리스트에 접근할 수 있게 해주는 기법이다.
예를 들어 >>>a[0:2]는 인덱스0부터 2까지 보여주는 명령문이다. 단, 인덱스2는 포함하지 않는다. 따라서 출력 결과는 [1, 2]가 될 것이다.
slicing의 사용예시는 아래와 같다.
>>> a[0:2] #인덱스0부터 2까지(단, 인덱스2는 포함하지 않음)
[1, 2]
>>> a[1:] #인덱스1부터 끝까지
[2, 3]
>>> a[:2] #인덱스 처음부터 2까지(단, 인덱스2는 포함하지 않음)
[1, 2]
>>> a[:3] #인덱스 처음부터 3까지(이 경우 인덱스3은 존재하지 않음으로 끝까지 출력)
[1, 2, 3]
>>> a[:4] #위 경우와 마찬가지
[1, 2, 3]
>>> a[:-1] #인덱스 처음부터 마지막 원소의 1개 전까지
[1, 2]
>>> a[:-2] #인덱스 처음부터 마지막 원소의 2개 전까지
[1]
>>> a[:-3] #인덱스 처음부터 마지막 원소의 3개 전까지
[]
리스트에 값을 추가하고 삭제하는 방법은 아래와 같다.
>>> list1 = []
>>> list2 = list()
>>> list1.append('100')
>>> list2.append('b')
>>> list2.insert(0, 'a')
>>> list2.remove('a')
- 튜플
튜플은 리스트와 비슷하지만 readonly라는 특성이 있다.
tuple1 = ('A', 'B', 'C', 'D', 'E')
tuple1[0] = 'a' 튜플은 readonly이기 때문에 변경불가
따라서 위와 같은 코드는 에러코드이다. 튜플은 고정된 값을 다룰 때 사용한다. 만일 튜플을 수정하고 싶다면 list로 형변환을 해서 수정한 뒤, 다시 튜플로 형변환을 하는 방법이 있다.
list1 = list(tuple1)
list1.append('a')
tuple2 = tuple(list1)
>>> tuple2
>>> ('A', 'B', 'C', 'D', 'E', 'a')
이렇게 사용에 제약이 있는만큼 튜플도 사용할 수 있는 함수가 정해져 있다. 바로 index함수와 count함수이다.
tuple1 = ('A', 'B', 'C', 'D', 'E')
>>> tuple1.index('C') #C가 위치하는 인덱스 번호
2
>>> tuple1.count('A') #A가 튜플에서 몇번 등장하는지 카운트
1
- 셋
리스트는 대괄호[], 튜플은 소괄호()라면 셋은 중괄호{}를 사용한다.
>>> t = {1,2,3,4,5}
>>> print(type(t))
<class 'set'>
셋은 index가 없기 때문에 slicing이 안되며, 중복된 데이터를 처리하지 않는다.
>>> set = {1,2,3,1,2,3}
>>> set
{1,2,3}
대신 교집합, 합집합, 차집합과 같은 연산자나 연산 함수를 사용할 수 있다.
연산자 | 연산함수 | |
교집합 | & | intersection() |
합집합 | | | union() |
차집합 | - | difference() |
대칭 차집합(합집합-차집합) | ^ | symmetric_difference() |
set 타입을 지원하는 함수는 add(), remove(), pop()이다. add()는 인자로 지정된 데이터를 집합에 추가하고, remove()는 인자로 지정된 데이터를 삭제하고, pop()은 집합의 가장 마지막에 입력된 데이터를 삭제한다.
>>> set = {'a,'b','c'}
>>> set.remove('a')
>>> set
{'b','c'}
>>> set.pop()
>>> set
{'b'}
- 딕셔너리
딕셔너리는 key와 value라는 한쌍으로 데이터를 저장한다. hash와 같은 개념이다. 사용 형태는 다음과 같다.
dic_val = {
key1 : value1,
key2 : value2
}
>>> d = {'a':1,
'b':2,
'c':3}
>>> print(d)
{'a': 1, 'b': 2, 'c': 3}
>>> print(type(d))
<class 'dict'>
#딕셔너리에 원소 추가하는 방법
>>> A = {'age':24} #딕셔너리 A 생성
>>> A['class'] = "B" #딕셔너리 A에 새 원소 추가
>>> print(A)
{'age': 24, 'class': 'B'}
#딕셔너리 원소 확인하는 방법
>>> A['age']
24
#딕셔너리 원소 변경하는 방법
>>> A['age'] = 23
>>> A
{'age': 23, 'class': 'B'}
딕셔너리가 지원하는 함수는 keys(), values(), items()가 있다. 리스트와 함께 사용하면 출력 결과를 보기 편할 것이다.
>>> list(exam.keys())
['수학', '영어', '국어]
>>> list(exam.values())
[100, 90, 85]
>>> exam.items()
dict_items(('수학', 100), ('영어', 90), ('국어', 85))
원소를 삭제하기 위해서는 pop()함수를 사용하면 된다. 인자에 있는 key와 그에 해당하는 value값을 지워준다.
- if문
파이썬에서는 공백이 정말 중요하다. 다른 언어에서는 탭을 하던 스페이스를 누르던 빌드에 아무 문제가 없었지만, 파이썬에서는 공백 문자인만큼 어떻게 하느냐에 따라 빌드가 실패할 수 있다. 따라서 들여쓰기에는 탭보단 공백4개를 입력하는게 일반적이다.
>>> happy = True
>>> sad = False
>>> if happy == sad:
print("happy and sad")
else:
print("happy")
print("sad")
happy
sad
- for문
파이썬의 for문은 c나 java와 형태는 비슷하나 문법이 조금 다르다.
>>> list1 = [100, 200, 300, 400, 500]
>>> i = 1
>>> for 값 in list1:
print(i, 값)
i += 1
1 100
2 200
3 300
4 400
5 500
이쯤되면 눈치챘겠지만 if문에서도, for문에서도 알 수 있듯이 파이썬은 세미콜론(;)을 쓰지 않고 :을 쓴다.
하여튼 이렇게 반복문을 만들 수도 있고, range라는 함수를 사용할 수도 있다.
>>> for i in range(0,5):
print('index: ', i)
index: 0
index: 1
index: 2
index: 3
index: 4
(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )
'간단 지식 > Python' 카테고리의 다른 글
06. 조건문과 반복문 (0) | 2021.07.07 |
---|---|
05. 문자열 format (0) | 2021.07.05 |
04. 문자열 함수 (0) | 2021.07.05 |
03. 웹 크롤링 - 주피터 노트북, 아나콘다, 파이썬 (0) | 2021.04.22 |
02. 아나콘다 에러 (0) | 2021.04.22 |