문자의 값을 숫자로 인식할지, 문자로 인식할지 구분
자료에 대한 타입: 숫자
, 문자열
, bool
어떤 값을 담는 자료구조: 변수
, 리스트
, 튜플
, 딕셔너리
, 집합
파이썬에서 사용되는 변수는 객체를 가리킴
우변에 있는 값 또는 식을 좌변 변수에 대입
수학적으로 같다는 말의 등호(=)와 다름
💡 example
a = 3
a = a+1
🔅 변수는 메모리의 주소를 가리킴, 메모리는 주소와 값을 지님
#1
a = [1,2,3]
b = a #a가 가진 주소를 보내줌
a[1] = 4
print(b) #[1,4,3] 출력, a[1]=4는 메모리 상에서 바뀌었고 a와 b는 같은 주소를 가리키므로 b가 가리키는 주소의 값도 바뀜
#2
print(id(a))
print(id(b)) #id(a)와 같은 (주소)값 출력
#3
print(a is b) #True 출력, a와 b가 같은 주소를 가리키는지
🔅 변경 전 list를 주고싶다면,
1) slicing
2) copy 모듈 사용
#1
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)와 다름
#2
from copy import copy
a = [1,2,3]
b = copy(a) #주소가 아닌 값 할당, 주소 다름
1) 튜플 이용
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 출력
#아래와 같이 type 사용해 자료형 구함
a=1
print(type(a))
✔ 정수형 => int
ex) 1, 2, -2
✔ 실수 => float
ex) 1.24, -34.56
💡 example
a = 3
b = 4
print(a+b) #7
print(a*b) #12
print(a/b) #0.75, Java에서는 몫이 나오지만 파이썬에서는 나누기한 값
print(a//b) #0, 파이썬에서의 몫 출력
print(a%b) #3, 파이썬에서의 나머지 출력
print(a**b) #81, a의 b제곱
💡 example
#1. 큰 타옴표
"Hello World"
#2. 작은 따옴표
'Hello World'
#3. 큰 따옴표 * 3 => tab과 space, enter 모두 인식
"""Life is too short, You need python"""
#4. 작은 따옴표 * 3
'''Life is too short, You need python'''
🔅 따옴표가 겹칠 경우, 따옴표 앞에 \
붙이면 사용 가능
a = 'Python\'s favorite food is perl'
print(a)
프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 문자 조합으로,
주로 출력물을 보기 좋게 정렬하는 용도로 사용
\n
: 줄 바꿈
\t
: 탭 간격
\\
: slash 그대로 사용
\'
: 작은 따옴표(') 그대로 사용
\"
: 큰 따옴표(") 그대로 사용
💡 example
a = "python"
b = "is fun"
print(a+b) #python is fun 출력
print(a*100) #python을 100번 출력
변수에 지정된 문자열의 각 문자는 번호로 매겨질 수 있는데,
이를 index 라 부르며index는 0부터 시작
하며-는 역방향으로 1부터 시작
💡 example
a = "Life is too short, You need python"
print(a[0]) #L 출력
print(a[-1]) #맨 뒤 문자 n 출력
print(a[-2]) #뒤에서 2번째 문자 o 출력
a[ x : y : z ] 는
문자열 a에서index가 x 이상 y 미만
인 문자를z 간격
으로 잘라내는 slicing 의미
💡 example
a = "20010331Rainy"
b = "12345678"
c = "12123425125"
print(a[:8]) #20010331 출력, 시작값은 없으므로 처음부터 index 8 미만까지
print(a[8:]) #Rainy 출력, 마지막값이 없으므로 index 8부터 끝까지
print(b[::2]) #1357 출력, 처음부터 끝까지 2간격
print(c[::-2]) #512311 출력, 간격이 - 이므로 뒤에서부터 끝까지 2간격
1) 문자열 포맷 코드
사용
문자열 포맷 코드
코드 | 설명 |
---|---|
%s | 문자열(String) |
%c | 문자 1개(Character) |
%d | 정수(Integer) |
%f | 부동소수(Floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 '%' 자체) |
💡 example
#1
a = "I eat %d apples." %3
print(a) #I eat 3 apples. 출력
#2
number = 10
day = "three"
b = "I ate %d apples. so I was sick for %s days." %(number, day)
print(b) #I ate 10 apples. so I was sick for three days. 출력
2) .format
사용
💡 example
#1
a = "{}".format("안녕")
print(a) #안녕
#2
b = "{name}은 {age}살이다".format(name="이시영", age=20) #이시영은 20살이다
print(b)
3) f
사용
파이썬 3.6 버전 이상만 가능
💡 example
name = "이시영"
a = f"나의 이름은 {name}입니다"
print(a) #나의 이름은 이시영입니다
문자열 포맷 코드 사용시 포맷 코드 사이에(ex.%s일 경우 %와 s 사이) 숫자를 넣으면 그만큼의 공백이 생긴 후 값이 들어감
💡 example
a = "%10s" %"hi"
print(a) # hi 출력 (앞은 공백)
문자열 포맷 코드 사용시 포맷 코드 사이에(ex.%s일 경우 %와 s 사이) 숫자를 넣으면 . 뒤에 나온 수만큼 소수점을 자른다
💡 example
a = "%0.4f" %3.42134234
print(a) #3.4213 출력
1) 문자열 세기 count
주어진 문자열에 하나의 문자가 몇 개나 들어가있는가
💡 example
a = "hobby"
a.count('b') #2 출력
2) 위치 알려주기 find
주어진 문자열에 하나의 문자가 들어간 index,
문자열에 해당 문자가 존재하지 않을 경우 -1 출력
💡 example
a = "Python is best choice"
a.fint("b")
3) 위치 알려주기 index
주어진 문자열에 하나의 문자가 들어간 index,
문자열에 해당 문자가 존재하지 않을 경우 오류 발생
💡 example
a = "Life is too short"
a.index("t") #8 출력
a.index("k") #오류 발생
4) 문자열 삽입 join
뒤에 나온 문자열을 앞에 나온 string 기준으로 쪼개짐, 리스트에서 많이 사용
💡 example
a = ",".join("abcd")
print(a) #a,b,c,d 출력
=> list에서의 사용예
💡 example
a = ",".join(["a","b","c"])
print(a) #a,b,c 출력
5) 소문자를 대문자로(대문자를 소문자로) 바꾸기 upper
,lower
💡 example
a = "hi"
a.upper() #HI 출력
6) 공백 없애주기 strip
💡 example
a = " HI "
print(a.strip()) #HI 출력
7) 문자열 바꾸기 replace
💡 example
a = "Life is too short"
a.replace("Life","Your leg")
print(a) #Your leg is too short 출력
8) 문자열 나누기 split
문자열 자료형이 있으면 () 사이의 문자 기준으로 잘라서 list로 만드는 함수
💡 example
a = "Life is too short"
print(a.split()) #["Life","is","too","short"]
변수 여러개를 묶는 역할
빈 값, 숫자, 문자, 숫자+문자, 리스트 등 다양한 형태의 요소 가능
💡 example
#1
a = ["이시영","문재성","int","김정현"] #list형태
print(a[1]) #문재성 출력, index 형태
#2
b = [1,2,"int","김정현",["김재원","Manse samdori"]]
print(b[4][1]) #Manse samdori 출력
💡 example
a = [1,2,3]
a[0] #1 출력
a[0]+a[2] #4 출력
a[-1] #3 출력
💡 example
a = [1,2,3,4,5]
a[0:2] #1,2 출력
b = a[:2]
c = a[2:]
print(b) #1,2 출력
print(c) #3,4,5 출력
💡 example
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] 출력
💡 example
#1
a = ["박주하", "잠수", "문재성"]
a[0] = "한재성"
print(a) #["한재성","잠수","문재성"] 출력
#2
b = ["박주하", "잠수", "문재성"]
b[0:2] = ["김정현","Stopmotion Man"]
print(b) #["김정현","Stopmotion Man","문재성"] 출력
1) []
사용
a = ["박주하", "잠수", "문재성"]
a[:2] = []
print(a) #["문재성"] 출력
2) del
함수 사용
a = ["박주하", "잠수", "문재성"]
del a[0]
print(a) #["잠수","문재성"] 출력
1) 요소 추가 append
💡 example
a = ["박주하", "잠수", "문재성"]
a.append("시우버")
print(a) #["박주하","잠수","문재성","시우버"] 출력
2) 리스트 정렬 sort
문자의 경우, 가나다 혹은 알파벳순, 숫자의 경우 오름차순으로 정렬
💡 example
a = [1, 5, 3]
a.sort()
print(a) #[1, 3, 5] 출력
3) 리스트 뒤집기 reverse
💡 example
a = [1, 5, 3]
a.reverse()
print(a) #[3, 5, 1] 출력
4) 위치 반환 index
💡 example
a = [1, 5, 3]
print(a.index(5)) #1 출력, index 1 자리에 5 존재
5) 리스트에 요소 삽입 insert
특정 index에 값 삽입
a.insert(x,y)
index x
위치에y 값
삽입
💡 example
a = [1, 2, 3]
a.insert(0,4) #[4,1,2,3] 출력
6) 리스트 요소 제거 remove
지우고자하는
값
제거, index 아님
remove 사용시 하나만 제거되므로 리스트에 지우고자하는 값이 여러개일 경우 for문 사용해서 제거
💡 example
a = [1, 5, 3]
a.remove(1)
print(a) #[5, 3] 출력
7) 리스트 요소 끄집어내기 pop
마지막 요소 출력 후 리스트에서 제거
💡 example
a = [1, 5, 3]
print(a.pop()) #3 출력
print(a) #[1, 5] 출력
8) 리스트에 포함된 요소 개수 세기 count
💡 example
a = [1, 5, 3, 1, 1]
print(a.count(1)) #3 출력
9) 리스트 확장 extend
💡 example
a = [1,2,3]
a.extend([4,5])
a #[1,2,3,4,5] 출력
b = [6,7]
a.extend(b)
a #[1,2,3,4,5,6,7] 출력
🔅 리스트와 튜플의 차이
리스트 | 튜플 |
---|---|
대괄호[ ] | 소괄호( ) |
변경가능 | 변경불가능 |
튜플은 요소 변경(요소 추가, 삭제, 값 변경) 허용하지 않음
💡 example
t1 = (1, 2, 'a', 'b')
t1[0] #1 출력
💡 example
t1 = (1, 2, 'a', 'b')
t1[1:] #(2, 'a', 'b') 출력
기존의 튜플이 변경되는 것이 아니고 기존의 튜플을 가지고 새로운 튜플을 만드는 것
💡 example
#1
t1 = (1, 2, 'a', 'b')
t2 = (3, 4)
print(t1+t2) #(1,2,'a','b',3,4) 출력
#2
t1 = (1, 2, 'a', 'b')
print(t1 * 3) #(1,2,'a','b',1,2,'a','b',1,2,'a','b') 출력
🔅 새롭게 정의한 튜플
아래와 같은 경우는 튜플을 바꾸는 것이 아니라 새롭게 정의한 것으로 튜플 변경
💡 example
a = (1,2)
a = a * 3
print(a) #(1,2,1,2,1,2)출력
key
를 이용해value
탐색,
연관 배열(Associative array) 또는 해시(Hash)
💡 example
dic = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
💡 example
a = {1:'a'}
a["name"] = "익명"
print(a) #{1:'a', 'name':'익명'}
💡 example
a = {1:'a','name':'익명'}
del a[1] #이때 [] 안에는 key값이 들어감,index 아님
print(a) #{'name':'익명'} 출력
💡 example
grade = {'pey':10, 'julliet':99}
grade['pey'] #10 출력
🔅 value는 중복되도 되지만 key는 중복되면 안 됨
💡 example
a = {1:'a', 1:'b'}
print(a) #{1:'b'} 출력 (key값 중복)
a = {1:'a', 2:'b'}
print(a) #{1:'a', 2:'b'} 출력
1) key 리스트 만들기 keys
💡 example
a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
a.keys() #dict_keys(['name','phone','birth']) 출력
2) value 리스트 만들기 values
a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
a.values() #dict_values(['pey', '0119993323', '1118']) 출력
3) item 튜플 만들기 items()
dictionary 전체 key와 value를 새로운 배열 안에 튜플 형태로 (key,value)쌍을 생성
a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
a.items() #dict_items([('name','pey'), ('phone','0119993323'), ('birth','1118')])
✔ 실제 사용 예제
#1
a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
for k in a.keys():
print(k) #'name'\n 'phone'\n 'birth'
#2
for v in a.values():
print(v) #'pey'\n '0119993323'\n '1118'
#3
for k, v in a.items():
print("key:", str(k))
print("value:", v) #key:1\n value:pey\n ...(반복)
4) key:value 쌍 모두 지우기 clear
a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
a.clear()
print(a) #{}
5) key로 value 얻기 get
a = {1:'pey', 2:'0119993323', 3:'1118'}
#비교
print(a[1]) #pey 출력
print(a[4]) #오류 발생
#get 사용
print(a.get(1)) #pey 출력
print(a.get(4)) #None 값 출력
print(a.get(4,'없음')) #없음 출력
6) 해당 key가 딕셔너리 안에 있는지 조사 in
a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
print('name' in a) #True 출력
print('email' in a) #False 출력
✔ 집합에 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형
✔ 요소가 중복될 수 없음
✔ 순서가 없음
💡 example
s1 = set("hello")
print(s1) #{'e','l','o','h'}
1) set() 안에 list 삽입
2) 중괄호{} 내에 요소 삽입
s1 = set([1,2,3])
s2 = {1,2,3}
🔅 주로 사용
중복되는 list의 중복 제거
💡 example
l = [1,2,2,3,3]
new_list = list(set(l))
print(new_list) #[1,2,3]
1) 교집합 &
(&)
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)) #위와 동일한 코드
2) 합집합 |
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)) #위와 동일한 코드
3) 차집합 -
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) 값 1개 추가 add
s1 = set([1,2,3,4,5,6])
s1.add(7)
print(s1) #{1,2,3,4,5,6,7} 출력
2) 값 여러개 추가 update
list 형태로 넣어줘야함, 기존에 존재한 값을 넣어도 오류X 나타나지는 않음
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} 출력
3) 특정 값 제거 remove
s1 = set([1,2,3])
s1.remove(2)
print(s1) #{1,3} 출력
True와 False 값으로 되어있음
boolean을 줄여서 bool이라 부름
a = True
print(type(a)) #bool 출력
자료형의 True/False
값 | True/False |
---|---|
"python" | True |
"" | False |
[1,2,3] | True |
[] | False |
() | False |
{} | False |
1 | True |
0 | False |
None | False |
🔅 요소가 있으면 True, 비어있는 상태면 False