Super Kawaii Cute Cat Kaoani [Python] 02. Python 프로그래밍의 기초, 자료형

[Python] 02. Python 프로그래밍의 기초, 자료형

2024. 1. 21. 04:06
728x90
SMALL

📌 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

 

728x90
LIST

'Language > Python' 카테고리의 다른 글

[Python] 04. 프로그램의 입출력  (2) 2024.01.21
[Python] 03. 제어문  (1) 2024.01.21
[Python] 01. Python이란 무엇인가?  (0) 2024.01.21

BELATED ARTICLES

more