📌 Python 출력 서식
print(format(123.45678, '10.3f'))
print(format(123.45678, '10.3'))
print(format(123, '10d'))
print('{0:.3f}'.format(1.0/3))
print('{0:_^10}'.format('hello'))
print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python'))
print('이름: {0}, 가격: {1}'.format('aa', 10000))
print('이름: {1}, 가격: {0}'.format('aa', 10000))
print('이름: {0}, 가격: {1}, 가격: {1}'.format('aa', 10000))
print('나는 나이가 %d 이다.'%23)
print('나는 나이가 %s 이다.'%'스물셋')
print('나는 나이가 %d 이고 이름은 %s이다.'%(23, '홍길동'))
print('나는 나이가 %s 이고 이름은 %s이다.'%(23, '홍길동'))
print('나는 키가 %f이고, 에너지가 %d%%.'%(177.7, 100))
print('a1', end=" ")
print('a2')
📌 Python Row String
- Row String
- 문자열 내부의 문자들을 문자로써 인식하기 위해 사용한다.
print('aa\tbb')
print(r'aa\tbb')
print(r"c:\aa\a1\a2.txt")
📌 Python 문자열 str
- 문자열 함수
- type(str) : 타입 확인
- len(str) : 길이 확인
- str.find('문자') : 처음 나오는 문자의 인덱스를 찾는 함수
- str.find('문자', 시작인덱스) : 시작 인덱스부터 시작하여 특정 문자의 인덱스를 찾는 함수
- str.rfind('문자') : 문자열 뒤에서부터 시작하여 특정 문자의 인덱스를 찾는 함수
s = 'sequence'
print(s, type(s), len(s))
print(s.count('e'))
print(s.find('e'))
print(s.find('e', 3))
print(s.rfind('e'))
s1 = 'a1'
print(s1, id(s1))
s1 = 'aaaa'
print(s1, id(s1))
- 인덱싱, 슬라이싱
- 인덱싱 형식 : 문자열[0]
- 슬라이싱 형식 : 문자열[start:stop:step]
print(s[0], s[3])
print(s[-1], s[-3])
print(s[0:3], s[:3])
print(s[3:8], s[3:])
print(s[:])
print(s[1:5:2])
print(s[::2])
print(s[-4:-1], s[-3:])
print('fre' + s[2:])
📌 Python 문자열 중요 함수
s2 = 'a1 a2'
s2 = ' ' + s2[:2] + 'a3' + s2[3:] + ' '
print(s2, len(s2))
print(s2.strip(), len(s2.strip()))
print(s2.lstrip())
print(s2.rstrip())
s2 = 'a1 a2'
s3 = s2.split(' ')
print(s3)
s3 = ['a1', 'a2']
print(' '.join(s3))
s2 = ' a1a3a2 '
print(s2.replace('a3', ' '))
📌 Python list
- list
- 순서 있음 : 인덱싱, 슬라이싱
- 수정 가능
- 여러 자료형 저장 가능
a = [1, 2, 3]
b = [10, a, 12.5, True, '문자열']
print(a, type(a))
print(b, type(b))
a1 = [1, 2, 3, ['a1', 'a2'], 4, 5]
print(a1)
print(a1[0])
print(a1[3])
print(a1[3][0])
family = ['엄마', '아빠', '나', '여동생']
print(family[3])
print(family[:2])
- 리스트 요소 추가
- list.append(요소) : 리스트 맨 뒤에 요소 추가
- list.insert(idx, 요소) : idx 인덱스에 요소 추가
- list.extend(iterator) : 다른 list를 해당 리스트 뒤에 붙이기
family.append('남동생')
family.insert(0, '할머니')
family.extend(['삼촌', '조카'])
family += ['이모', '친척 누나']
print(family)
family[0] = '외할머니'
print(family)
- 리스트 요소 삭제
- list.remove(요소) : 값을 지정해 해당 값을 리스트에서 삭제
- del list[idx] : 인덱스를 지정해 해당 인덱스의 값을 리스트에서 삭제
family.remove('남동생')
del family[-4]
print(family)
- 리스트에서 특정 요소 인덱스 찾기
- list.index(요소) : 지정한 요소의 인덱스를 반환
print(family.index('여동생'))
print('엄마' in family)
del family
- sort() 함수
- list.sort(key=키값, reverse=반전여부) : key와 reverse 값을 기준으로 list를 정렬
a2 = ['123', '34', '234', '1234']
a2.sort()
print(a2)
a2.sort(key=int, reverse=True)
print(a2)
- 얕은 복사 AND 깊은 복사
- 얕은 복사 : 동일한 객체 주소만 복사
- 깊은 복사 : 새로운 객체로 생성
name = ['a1', 'a2', 'a3', 'a4']
print(name)
name2 = name
print(id(name) == id(name2))
import copy
name3 = copy.deepcopy(name)
print(id(name) == id(name3))
📌 Python tuple
- tuple
- list와 유사하나 읽기 전용(list보다 속도가 빠름)
- 순서 있음(인덱싱, 슬라이싱)
- 수정 불가
t = ('a', 'b', 'c', 'a')
print(t, type(t), len(t), t.count('a'), t.index('a'))
print(t[0])
print(t[0:2])
t = ('a', 'b', 'c', 'a')
a = list(t)
a[1] = 'a2'
t = tuple(a)
print(t)
print((1), type((1)))
print((1,), type((1,)))
📌 Python set
s1 = {1, 2, 3, 1}
print(s1, type(s1), len(s1))
- 합집합 함수
- set1.union(set2) : 합집합을 수행
s1 = {1, 2, 3, 1}
s2 = {3, 4}
print(s1.union(s2))
- 교집합 함수
- set1.intersection(set2) : 교집합을 수행
s1 = {1, 2, 3, 1}
s2 = {3, 4}
print(s1.intersection(s2))
s1 = {1, 2, 3, 1}
s2 = {3, 4}
print(s1 | s2)
s1 = {1, 2, 3, 1}
s2 = {3, 4}
print(s1 & s2)
s1 = {1, 2, 3, 1}
s2 = {3, 4}
print(s1 - s2)
- 함수를 이용한 추가 가능
- set.update(iterator) : 묶음형 데이터를 set 뒤에 추가한다.
s1 = {1, 2, 3}
s1.update({4, 5})
s1.update([6, 7, 8])
s1.update((9, ))
print(s1)
- 함수를 이용한 삭제 가능
- discard() : 데이터 삭제, 지정한 값이 없으면 skip
- remove() : 데이터 삭제, 지정한 값이 없으면 에러
s1.discard(9)
s1.remove(8)
print(s1)
s1.clear()
li = [1, 2, 3, 1, 2, 3]
li_a = set(li)
li = list(li_a)
print(li)
📌 Python dict
- dict
- {'key' : 'value'}
- 순서 없음
- key value 형식
my = dict(k1=1, k2='aa', k3=3.4)
print(my, type(my))
dic = {'파이썬':'snake', '자바':'coffee', '스프링':'spring'}
print(dic)
print(dic['파이썬'])
dic['오라클'] = '예언자'
print(dic)
del dic['오라클']
dic.pop('스프링')
print(dic)
dic['자바'] = 'java'
print(dic)
print(dic.keys())
print(dic.values())
📌 Python Regular Expression
- re
- 사용 목적 : 대량의 데이터에서 원하는 데이터만 선택해서 처리할 때 효과적이다.
- 직접 사용법 : re.findall(r'패턴', 문자열)
- 간접 사용법
p = re.compile(r'패턴')
p.findall(문자열)
import re
s1 = "1234 abc가나다abcABC_123555_6'Python is fun'"
print(s1)
print(re.findall(r'1234\s\w{1,5}', s1))
print(re.findall(r'1', s1))
print(re.findall(r'(1|2)', s1))
print(re.findall(r'[1-2]', s1))
print(re.findall(r'[1-9]+', s1))
print(re.findall(r'[1-9]{2}', s1))
print(re.findall(r'[1-9]{2,3}', s1))
print(re.findall(r'[a-zA-Z]+', s1))
print(re.findall(r'[가-힣]+', s1))
print(re.findall(r'[^가-힣]+', s1))
print(re.findall(r'(12|34)', s1))
print(re.findall(r'.bc', s1))
print(re.findall(r'...', s1))
print(re.findall(r'[^1]+', s1))
print(re.findall(r'^1+', s1))
print(re.findall(r'\d+', s1))
print(re.findall(r'\s+', s1))
print(re.findall(r'\w+', s1))
📌 Python if 문
- if 문
- 조건문에 ()를 사용하지 않아도 된다.
- {} 로 실행문을 묶는 것이 아닌 :로 실행문 시작을 알린다.
- else if() 문 대신 elif 문을 사용한다.
- 한 줄 표현식
a = 'abc'
b = 1 if a == 'abc' else 0
print(b)
a = 10
b = 'true' if a == 10 else 'false'
print(b)
📌 Python while 문
print('3의 배수의 합 출력')
i = 1; hap = 0
while i <= 100:
if (i % 3 == 0):
print(f'{hap} + {i} = {hap+i}')
hap += i
i += 1
print(f'합은 {hap}이다.')