간단 지식/Python

01. 파이썬 자료형

납작한돌맹이 2021. 3. 6. 00:50
반응형

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. 문자열 함수

 

04. 문자열 함수

파이썬에서도 문자열과 관련된 유용한 함수가 많다. len('helloworldpython') 16 '-'.join('HelloWorldPython') 'H-e-l-l-o-W-o-r-l-d-P-y-t-h-o-n' '-'.join('12345') '1-2-3-4-5' 'Hello-world-Python'.split('-..

20plus3.tistory.com

 


기본 자료형 외에도 리스트, 튜플, 딕셔너리, 셋과 같은 자료형이 존재한다.

 

  • 리스트

파이썬에도 리스트가 있다. 리스트를 생성하는 방법은 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