📌 1. 자료형이란?
- 문자의 값을 숫자로 인식할 지 문자로 인식할 지 구분할 수 있게 해줌
- ex)
- 1 + 1 = 2
- '1' + '1' = '11'
1) 자료에 대한 타입 : 숫자, 문자열, bool
2) 어떤 값을 담는 자료구조 : 변수, 리스트, 튜플, 딕셔너리, 집합
📌 2. 변수
- 파이썬에서 사용되는 변수는 객체를 가리킴
- 우변에 있는 값 또는 식을 좌변 변수에 대입 (ex. a = 3 a=a+1)
- '='의 의미는 수학과 다름
- type(변수) => 변수의 타입을 알 수 있음
1) 메모리와 주소
- 변수는 메모리의 주소를 가리킴
- 메모리는 주소와 값을 지님
#ex1)
a = [1, 2, 3]
b = a #a가 가진 주소를 보내줌
a[1] = 4
print(b) #[1, 4, 3]출력, a[1] = 4는 메모리 상에서 바뀌었고 a와 b는 같은 주소를 가리킴
#ex2)
print(id(a))
print(id(b)) #id(a)와 같은 주소 값을 출력
#ex3)
print(a is b) #True 출력, a와 b가 같은 주소를 가르키냐 물었음
- 값을 주지만, 같이 변하지 않게 하기 위해서는
- 1) slicing
- 2) copy 모듈 사용
#ex1)
a = [1, 2, 3]
b = a[:] #slicing하면 새로운 list가 생기는 것으로 복사됨, 둘은 다른 아이임
a[2] = 4
print(a) #[1, 4, 3]출력
print(b) #[1, 2, 3]출력
print(id(a))
print(id(b)) #id(a)와 다름(주소 다름)
#ex2)
from copy import copy
a = [1, 2, 3]
b = copy(a) #주소가 아닌 값 할당, 주소 다름
2) 변수 만드는 법
- '='사용
✔ 튜플 이용
a, b = ('python', 'life')
print(a) #python출력
print(b) #life출력
✔ 리스트 이용
a, b = ['python', 'life']
print(a) #python 출력
print(b) #life 출력
✔ 같은 값 대입
a = b = 'hello'
✔ 변수 값 교환
a = 3
b = 5
a, b = b, a
print(a) #5
print(b) #3
📌 3. 숫자형
1) 타입
- 정수형(int)(1, 2, -2)
- 실수(float)(1.24, 34.56)
- 컴퓨터식 지수 표현 방식(float)(4.24e10, 4.24e-10)
- 8진수(0o37)
- 16진수(0x74)
2) 사칙연산
- 덧셈 : '+'
- 뻴셈 : '-'
- 곱셈 : '*'
- 나누기 : '/'
- 나눗셈 몫 : '//'
- 나눗셈 나머지 : '%'
- 제곱 : '**'
3) 문자열 자료형(str)
✔ 따옴표
- 큰 따옴표 : "Hello world"
- 작은 따옴표 : 'Hello world'
- 큰 따옴표 3개 : tab과 space, enter(줄바꿈) 자유롭게 가능 : """Life is too short, You need python"""
- 작은 따옴표 3개 : tab과 space, enter(줄바꿈) 자유롭게 가능 : '''Life is too short, You need python'''
💡' \'를 사용하면 따옴표 기호로 사용 가능
#ex)
a = 'Python\'s favorite food is perl'
print(a) # Python's favorite food is perl
4) 이스케이프 코드
- 문자 ' or "를 따로 사용할 경우 ' or "로 표현
- 문자 \를 따로 사용할 경우 \로 표현
- 문자열 사이에 줄바꿈을 하려면 \n
- 문자열 사이에 탭 간격을 줄 때 \t
- 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)하려면 \r
- 벨 소리(출력할 때 PC 스피커에서 '삑' 소리남)를 하려면 \a
- 벡스페이스하려면 \b
- 널문자 \000
5) 문자열 덧셈, 곱셈
#ex)
a = "Python"
b = " is fun!"
print(a+b) #Python is fun!
print(a*100) #Python 100번 출력
6) 인덱싱(Indexing)
- 문자열의 각 문자는 번호로 매겨짐
- 0부터 시작
- 역방향으로는 -1부터 시작
#ex)
a = "Life if too short, You need Python"
print(a[0])#'L'
print(a[1])#'i'
# 0부터 숫자를 세며 문자열 첫 시작 문자가 0번이 됨
print(a[-1]) #'n' 맨 뒤에서 부터 셈
print(a[-2]) # 'o'
7) 슬라이싱(Slicing)
a[x:y:z] => x 이상 y 미만 z 간격
#ex)
a = "Life if too short, You need Python"
print(a[0:4]) # "Life" 0~ 4-1
# a[A:B:C] #A 이상 B 미만 C 간격으로
print(a[:8]) #"Life if " 앞에 비워두면 처음부터 시작
print(a[::-1]) # 뒤집어서 한 칸씩 출력 (역순)
print(a[::-2]) #뒤집어서 두 칸씩 출력(역순)
8) 문자열 포매팅
#ex)
a = "I eat %d apples." %3
print(a) #"I eat %d apples."
b = "I eat " + str(3) + " apples" # 이렇게 번거롭지 않아도 됨
number = 10
day = "three"
c = "I ate %d apples. so I was sick for %s days." %(number, day)
- %s : 문자열
- %c : 문자 1개
- %d : 정수
- %f : qnehd thtn
- %o : 8진수
- %x : 16진수
- %% : Literal % (문자 '%' 자체)
.format
f
(파이썬 3.6부터 가능)
#ex)
a = "aasdf asdfasd fasdf {} asdfasd" .format("안녕")
print(a) #{} 사이에 안녕이 들어감
b = "aasdf asdfasd fasdf {name} asdfasd" .format(name = "호호")
print(b) #name 자리에 호호가 들어감
name = "int"
a = f"나의 이름은 {name}입니다" #앞에 f 하나만 붙여도 name 자리에 int 들어감
9) 정렬과 공백
- 문자열
문자열 포맷 코드 사용시 포맷 코드 사이에 숫자를 넣으면 그만큼의 공백이 생김
#ex)
a = "%10s" %"hi"
print(a) # hi(앞에 10칸의 공백)
b = "%-10sjane." %"hi"
#hi jane
- 소수점 표현
%와 f 사이에 숫자를 넣으면 소수를 자를 수 있음
%간격.소수점 남기는 자리 수 f
#ex)
a = "%0.4f" %3.42134234
print(a) #3.4213
#0.4 => 간격.소수점 남기는 자리 수
10) 함수
- 문자열 개수 세기 : count
- 주어진 문자열에 하나의 문자가 몇 개나 들어있는지 알려줌
#ex)
a = "hobby"
print(a.count('b')) #2
- 위치 알려주는 함수
- find
- 주어진 문자열에 찾고자 하는 문자가 들어간 가장 처음의 index (문자열에 해당 문자가 존재하지 않을 경우 -1 출력)
#ex)
a = "hobby"
print(a.find('b')) #2
print(a.find('x')) # -1
- index
- 주어진 문자열에 찾고자 하는 문자가 들어간 가장 처음의 index (문자열에 해당 문자가 존재하지 않을 경우 오류)
#ex)
a = "hobby"
print(a.find('b')) #2
print(a.find('x')) #오류 발생
- 문자열 삽입 : join
- 앞에 나온 string을 문자열 사이에 삽입. (리스트에서 많이 사용)
#ex)
a = ",".join("abcd")
print(a) #a,b,c,d
#리스트 ex)
a=",".join(["a", "b", "c"])
print(a) #a,b,c
- 소문자를 대문자로 바꾸기 (대문자-> 소문자도 해당) : upper, lower
#ex)
a = "hi"
print(a.upper()) ##HI
b = "HI"
print(a.lower()) #hi
- 공백 없애주기 : strip
#ex)
a = " HI "
print(a.strip()) #HI
- 문자열 바꾸기 : replace
replace(a, b) => a->b로 교체
#ex)
a = "Life is too short"
a.replace("Life","Your leg")
print(a) # Your leg is too short
- 문자열 나누기 : split
- 문자열을 () 사이의 문자 기준으로 잘라서 list로 만듦
#ex)
a = "Life is to short"
print(a.split()) #["Life", "is", "to", "short"] 그냥 띄어쓰기 기준
b = "A:B:C"
print(b.split(":")) #["A","B", "C"]
📌 4. 리스트(List)
변수 여러 개를 묶는 역할
빈값, 숫자, 문자, 숫자 + 문자, 리스트 등 다양한 형태의 요소 가능
#ex)
a = [] #빈칸
b = [1, 2, 3] #숫자
c = ['Life', 'is', 'too', 'short'] #문자
d = [1, 2, 'Life', 'is'] #문자 + 숫자
e = [1, 2, ['Life', 'is']] #리스트 안에 또 리스트 가능
print(e[2][1]) #Life
1) 인덱싱(Indexing)
#ex)
a = [1, 2, 3]
print(a[0]) #1
print(a[0]+a[2]) #4
print(a[-1]) #3
2) 슬라이싱(Slicing)
#ex)
a = [1, 2, 3, 4, 5]
a[0:2] #1, 2출력
b = a[:2] #[1, 2]
c = a[2:] #[3, 4, 5]
3) List 덧셈, 곱셈
#ex)
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b) #[1, 2, 3, 4, 5, 6]
print(a * 3) #[1, 2, 3, 1, 2, 3, 1, 2, 3]
4) List 값 수정
#ex)
a = ["박주하", "잠수", "문재성"]
a[0] = "한재성"
print(a) #["한재성", "잠수", "문재성"]
b = ["박주하", "잠수", "문재성"]
b[0:2] = ["김정현", "Stopmotion Man"]
print(b) #["김정현", "Stopmotion Man", "문재성"]
5) List 값 삭제
✔ [] 사용
#ex)
a = ["박주하", "잠수", "문재성"]
a[:2]=[]
print(a) #["문재성"]
✔ del 함수 사용
#ex)
a = ["박주하", "잠수", "문재성"]
del a[0]
print(a) #["잠수", "문재성"]
6) List의 함수
✔ 요소 추가 : append
#ex)
a = ["박주하", "잠수", "문재성"]
a.append("시우버")
print(a) #["박주하", "잠수", "문재성", "시우버"]
✔ 리스트 정렬 : sort
-> 문자의 경우 가나다 or 알파벳 순, 숫자의 경우 오름차순으로 정렬
#ex)
a = [1, 5, 3]
a.sort()
print(a) #[1, 3, 5]
✔ 리스트 뒤집기 : reverse
#ex)
a = [1, 5, 3]
a.reverse()
print(a) #[3, 5, 1]
✔ 위치 반환 : index
#ex)
a = [1, 5, 3]
print(a.index(5)) #1
✔ 리스트에 요소 삽입 : insert
- 특정 index에 값을 삽입
- a.insert(x,y) index x 위치에 y값 삽입
#ex)
a = [1, 2, 3]
a.insert(0, 4) #[4, 1, 2, 3]
✔ 리스트 요소 제거 : remove
- 지우고자 하는 값 제거
- 괄호 안에 index가 아닌 값을 집어 넣음
- 하나만 제거되므로 지우고자 하는 값이 여러 개일 경우 for문 사용하여 제거
#ex)
a = [1, 5, 3]
a.remove(1)
print(a) #[5, 3]
✔ 리스트 요소 끄집어내기 : pop
- 마지막 요소 출력 후 List에서 제거
#ex)
a = [1, 5, 3]
print(a.pop()) #3
print(a) #[1, 5]
✔ 리스트에 포함된 요소 개수 세기 : count
#ex)
a = [1, 5, 3, 1, 1]
print(a.count(1)) #3
✔ 리스트 확장 : extend
#ex)
a = [1, 2, 3]
a.extend([4, 5])
print(a) #[1, 2, 3, 4, 5]
b = [6, 7]
a.extend(b)
print(a) #[1, 2, 3, 4, 5, 6, 7]
📌 5. 튜플(tuple)
- 리스트와 튜플의 차이
|리스트|튜플|
|::|::|
|대괄호[]|소괄호()|
|변경 가능|변경 불가능|
1) 요소 변경 불가능
요소 추가, 삭제, 값 변경 등이 불가능하다
#ex)
t1 = (1, 2, 'a', 'b')
del t1[0] #오류
t1[0] = 'c' #오류
2) Indexting
### 2. Indexting
```python
#ex)
t1 = (1, 2, 'a', 'b')
print(t1[0]) #1 출력
3) Slicing
#ex)
t1 = (1, 2, 'a', 'b')
print(t1[0:2]) #(1, 2) 출력
4) 덧셈, 곱셈
- 기존의 튜플이 변경되는 것이 아니고 기존의 튜플을 가지고 새로운 튜플을 만듦
t1 = (1, 2, 'a', 'b')
t2 = (3, 4)
#덧셈 ex)
print(t1 + t2) #(1, 2, 'a', 'b', 3, 4)
#곱셈 ex)
print(t1 * 3) #(1, 2, 'a', 'b', 1, 2, 'a', 'b', 1, 2, 'a', 'b')
📌 6. 딕셔너리(dictionary)
- 연관 배열(Associative array) 또는 해시(Hash)
key
를 통해서value
탐색
dic = {'name' : 'Eric', 'age : 19'}
1) 딕셔너리 쌍 추가
a = {1 : 'a'}
a['name'] = "익명"
print(a) #{1 : 'a', 'name' : '익명'}
2) 딕셔너리 쌍 삭제
a = {1 : 'a', 'name' : '익명'}
del a[1] #[] 안에 index 값이 아니라 key 값이 들어감
print(a) #{'name' : '익명'}
3) key를 이용해서 value 얻기
grade = {'pey' : 10, 'julliet' : 99}
print(grade['pey']) #10
print(grade['julliet']) #99
4) 딕셔너리를 만들 때 주의할 점
- value는 중복가능
- key는 중복 불가능
a = {1 : 'a', 1 : 'b'}
print(a) #{1 : 'b'} (key 값 중복)
a = {1 : 'a', 2 : 'b'}
print(a) #{1 : 'a', 2 : 'b'}
5) 함수
✔ key 리스트 만들기 keys
a = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
print(a.keys()) #dict_keys(['name', 'phone', 'birth'])
✔ value 리스트 만들기 values
a = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
print(a.values()) #dict_values(['pey', '01000000000', '0101'])
✔ item 튜플 만들기 items()
딕셔너리 전체 key와 value를 새로운 배열 안에 튜플 형태로 (key, value) 쌍을 생성함
a = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
print(a.items()) #dict_items([('name','pey'), ('phone', '01000000000'), ('birth', '0101')])
#실제 사용 예제
a = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
for k in a.keys():
print(k) #'name'\n 'phone'\n 'birth'\n
for v in a.values():
print(v) #'pey'\n '01000000000'\n '0101'\n
for k, v in a.items():
print("key : ", str(k))
print("value : ", v) #key : 'name'\n value : 'pey'\n ... 반복
✔ key : value 쌍 모두 지우기 clear
a = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
a.clear()
print(a) #{}
✔ key : value 얻기 get
a = {1 : 'pey', 2 : '01000000000', 3 : '0101}
print(a[1])
print(a.get(1))
# 똑같이 'pey' 출력
#다른 점 : 없는 것을 출력할 때 유용
print(a[4]) #오류 발생
print(a.get(4)) #'None' 출력
print(a.get(4, '없음') #4라는 키가 없을 때 '없음' 출력
✔ 해당 key가 딕셔너리 안에 있는지 조사 in
a = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
print('name' in a) #True 출력
print('age' in a) #False 출력
📌 7. 집합(set)
1) 특징
- 집합에 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형
- 중복을 허용하지 않음
- 순서가 없음
s1 = set("hello")
print(s1) #{'e', 'l', 'o', 'h'}
2) 정의
✔ set() 안에 list 삽입
✔ 중괄호 {} 내에 요소 삽입
s1 = set([1, 2, 3])
s2 = {1, 2, 3}
print(s1) #{1, 2, 3}
print(s2) #{1, 2, 3}
print(type(s1)) #<class 'set'>
💡lsit의 중복을 제거하기 위해 주로 사용
l = [1, 2, 2, 3, 3]
new_list = list(set(l))
print(new_list) #[1, 2, 3]
3) 연산
✔ 교집합 &
=> s1.intersection(s2)와 동일 의미
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1&s2) #{4, 5, 6}
print(s1.intersection(s2)) #{4, 5, 6}
✔ 합집합 |
= s1.union(s2)와 동일 의미
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1|s2) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s1.union(s2)) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
✔ 차집합 -
= s1.difference(s2)와 동일 의미
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1-s2) #{1, 2, 3}
print(s2-s1) #{7, 8, 9}
print(s1.difference(s2)) #{1, 2, 3}
print(s2.difference(s1)) #{7, 8, 9}
4) 함수
✔ 값 1 개 추가 : add
s1 = set([1, 2, 3, 4, 5, 6])
s1.add(7)
print(s1) #{1, 2, 3, 4, 5, 6, 7}
✔ 값 1 개 추가 : update
❗리스트 형태로 넣어줘야 함
-> 기존에 존재한 값을 넣으면 오류는 나타나지 않지만 중복되게 추가되지는 않는다
s1 = set([1, 2, 3, 4, 5, 6])
s1.update([7, 8, 9, 1])
print(s1) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
✔ 특정 값 제거 : remove
s1 = set([1, 2, 3])
s1.remove(2)
print(s1) #{1, 3}
📌 8. 불(boolean)
- True/False 값으로 되어있음
- boolean을 줄여서 bool이라 부름
a = True
print(type(a)) #bool 출력
자료형의 True/False
|값|True/False|
|::|::|
|"python"|참|
|""|거짓|
|[1, 2, 3]|참|
|[]|거짓|
|()|거짓|
|{}|거짓|
|1|참|
|0|거짓|
|None|거짓|
요소가 있으면 True, 비어있는 상태면 False
<조코딩, "최신 파이썬 코딩 무료 강의"> 을 참고하여 작성한 글입니다.

PREV
[Python] 01. Python이란 무엇인가?
1. Python 시작하기 구글에서 만들어진 소프트웨어의 50% 이상 파이썬이 사용됨 드롭박스(Dropbox), 인스타그램(Instagram) 등에서 사용 이해하기 쉬워 공동 작업과 유지 보수가 편함 2. Python 특징 문법이
nyeroni.tistory.com
NEXT
[Python] 03. 제어문
📌 1. 조건문 들여쓰기를 잘못할 경우 SyntaxError 발생 VSCode에서 코드 진행 상황을 보려면 코드 번호 왼쪽에 Breakpoint(시작포인트)를 건 후 Run->Start debugging 실행해 한 줄씩 확인 가능 ++연산자와 --연
nyeroni.tistory.com
'Language > Python' 카테고리의 다른 글
[Python] 04. 프로그램의 입출력 (2) | 2024.01.21 |
---|---|
[Python] 03. 제어문 (1) | 2024.01.21 |
[Python] 01. Python이란 무엇인가? (2) | 2024.01.21 |