=> 문자의 값을 숫자로 인식할 지 문자로 인식할 지 구분할 수 있게 해줌
ex) 1 + 1 = 2, '1' + '1' = '11'
1) 자료에 대한 타입 : 숫자, 문자열, bool
2) 어떤 값을 담는 자료구조 : 변수, 리스트, 튜플, 딕셔너리, 집합
#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가 같은 주소를 가르키냐 물었음
#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) #주소가 아닌 값 할당, 주소 다름
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
💡 \를 사용하면 따옴표 기호로 사용 가능
#ex)
a = 'Python\'s favorite food is perl'
print(a) # Python's favorite food is perl
-> 문자 ' or "를 따로 사용할 경우 \' or \"로 표현
-> 문자 \를 따로 사용할 경우 \로 표현
-> 문자열 사이에 줄바꿈을 하려면 \n
-> 문자열 사이에 탭 간격을 줄 때 \t
-> 캐리지 리턴(줄 바꿈 문자, 현재 커서를 가장 앞으로 이동)하려면 \r
-> 벨 소리(출력할 때 PC 스피커에서 '삑' 소리남)를 하려면 \a
-> 벡스페이스하려면 \b
-> 널문자 \000
#ex)
a = "Python"
b = " is fun!"
print(a+b) #Python is fun!
print(a*100) #Python 100번 출력
#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'
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]) #뒤집어서 두 칸씩 출력(역순)
#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)
.formatf (파이썬 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 들어감
#ex)
a = "%10s" %"hi"
print(a) # hi(앞에 10칸의 공백)
b = "%-10sjane." %"hi"
#hi jane
#ex)
a = "%0.4f" %3.42134234
print(a) #3.4213
#0.4 => 간격.소수점 남기는 자리 수
#ex)
a = "hobby"
print(a.count('b')) #2
위치 알려주는 함수
find
-> 주어진 문자열에 찾고자 하는 문자가 들어간 가장 처음의 index (문자열에 해당 문자가 존재하지 않을 경우 -1 출력)
#ex)
a = "hobby"
print(a.find('b')) #2
print(a.find('x')) # -1
#ex)
a = "hobby"
print(a.find('b')) #2
print(a.find('x')) #오류 발생
#ex)
a = ",".join("abcd")
print(a) #a,b,c,d
#리스트 ex)
a=",".join(["a", "b", "c"])
print(a) #a,b,c
#ex)
a = "hi"
print(a.upper()) ##HI
b = "HI"
print(a.lower()) #hi
#ex)
a = " HI "
print(a.strip()) #HI
#ex)
a = "Life is too short"
a.replace("Life","Your leg")
print(a) # Your leg is too short
#ex)
a = "Life is to short"
print(a.split()) #["Life", "is", "to", "short"] 그냥 띄어쓰기 기준
b = "A:B:C"
print(b.split(":")) #["A","B", "C"]
변수 여러 개를 묶는 역할
빈값, 숫자, 문자, 숫자 + 문자, 리스트 등 다양한 형태의 요소 가능
#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
#ex)
a = [1, 2, 3]
print(a[0]) #1
print(a[0]+a[2]) #4
print(a[-1]) #3
#ex)
a = [1, 2, 3, 4, 5]
a[0:2] #1, 2출력
b = a[:2] #[1, 2]
c = a[2:] #[3, 4, 5]
#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]
#ex)
a = ["박주하", "잠수", "문재성"]
a[0] = "한재성"
print(a) #["한재성", "잠수", "문재성"]
b = ["박주하", "잠수", "문재성"]
b[0:2] = ["김정현", "Stopmotion Man"]
print(b) #["김정현", "Stopmotion Man", "문재성"]
1) [] 사용
#ex)
a = ["박주하", "잠수", "문재성"]
a[:2]=[]
print(a) #["문재성"]
2) del 함수 사용
#ex)
a = ["박주하", "잠수", "문재성"]
del a[0]
print(a) #["잠수", "문재성"]
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]
#ex)
t1 = (1, 2, 'a', 'b')
del t1[0] #오류
t1[0] = 'c' #오류
#ex)
t1 = (1, 2, 'a', 'b')
print(t1[0]) #1 출력
#ex)
t1 = (1, 2, 'a', 'b')
print(t1[0:2]) #(1, 2) 출력
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')
key를 통해서 value 탐색dic = {'name' : 'Eric', 'age : 19'}
a = {1 : 'a'}
a['name'] = "익명"
print(a) #{1 : 'a', 'name' : '익명'}
a = {1 : 'a', 'name' : '익명'}
del a[1] #[] 안에 index 값이 아니라 key 값이 들어감
print(a) #{'name' : '익명'}
grade = {'pey' : 10, 'julliet' : 99}
print(grade['pey']) #10
print(grade['julliet']) #99
a = {1 : 'a', 1 : 'b'}
print(a) #{1 : 'b'} (key 값 중복)
a = {1 : 'a', 2 : 'b'}
print(a) #{1 : 'a', 2 : 'b'}
keysa = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
print(a.keys()) #dict_keys(['name', 'phone', 'birth'])
valuesa = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
print(a.values()) #dict_values(['pey', '01000000000', '0101'])
items()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 ... 반복
cleara = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
a.clear()
print(a) #{}
geta = {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라는 키가 없을 때 '없음' 출력
ina = {'name' : 'pey', 'phone' : '01000000000', 'birth' : '0101'}
print('name' in a) #True 출력
print('age' in a) #False 출력
s1 = set("hello")
print(s1) #{'e', 'l', 'o', 'h'}
1) set() 안에 list 삽입
2) 중괄호 {} 내에 요소 삽입
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]
&=> 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}
adds1 = set([1, 2, 3, 4, 5, 6])
s1.add(7)
print(s1) #{1, 2, 3, 4, 5, 6, 7}
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}
removes1 = set([1, 2, 3])
s1.remove(2)
print(s1) #{1, 3}
a = True
print(type(a)) #bool 출력
자료형의 True/False
|값|True/False|
|::|::|
|"python"|참|
|""|거짓|
|[1, 2, 3]|참|
|[]|거짓|
|()|거짓|
|{}|거짓|
|1|참|
|0|거짓|
|None|거짓|
=> 요소가 있으면 True, 비어있는 상태면 False
<[출처] 조코딩, "최신 파이썬 코딩 무료 강의", https://www.youtube.com/watch?v=KL1MIuBfWe0&list=PLU9-uwewPMe2AX9o9hFgv-nRvOcBdzvP5> 을 참고하여 작성한 글입니다.