x = 100
y = 100.0
z = 'python'
■ Python 자료형 (ex) 보고서용)
1. list ( PL/SQL 1차원배열 )
- 데이터 목록을 다루는 자료형
- 1차원 배열, 서로 다른 데이터 타입을 가질 수 있는 자료형
- 중첩할 수 있다.
- 작성 : []
- list()
x1 = []
type(x1)
x2 = list()
type(x2)
x = [10, 20, 30]
x
type(x)
PL/SQL count
# 리스트 변수에 입력된 값의 수
len(x)
# 인덱싱(indexing)
x[0]
x[1]
x[2]
x[-1]
x[-2]
x[-3]
# 슬리이싱(slicing)
x[0:2]
x[1:]
x[:-1]
PL/SQL index by 요소번호
# list 값 수정 (바로 적용)
x[0] = 100
x[1:3] = [200, 300]
x
# 변수명.append() : 리스트 값 추가
x.append(400)
x[3]
# 기존 리스트 변수에 다른 리스트 변수를 이어 붙이는 함수 (바로 적용)
y = [600, 700]
x.extend(y)
x
y
x[4]
# 인덱스를 이용해서 새로운 값을 입력하는 함수 (바로 적용)
x = []
x.insert(4, 500)
x
# 서로 다른 리스트 변수를 이어 붙이는 방법 (미리보기)
z = [800, 900, 1000]
w = x + z # 오버로딩
# 리스트 변수에 있는 값 중에 마지막 값을 제거하는 방법
w[:-1] #미리보기
del w[-1] # 리스트에 특정한 인덱스 값을 제거(바로적용)
w
# 인덱스를 이용해서 새로운 값을 입력하는 함수 (바로적용)
x = []
x.insert(4, 500)
x
# 서로 다른 리스트 변수를 이어 붙이는 방법(미리보기)
z = [800, 900, 1000]
w = x + z # 오버로딩
# 리스트 변수에 있는 값 중에 마지막 값을 제거하는 방법
w[:-1] #미리보기
del w[-1] # 리스트에 특정한 인덱스 값을 제거(바로적용)
w.pop() # 리스트 변수에 있는 값 중에 마지막 값을 제거하는 방법(바로적용) ex)책상위에 책제거하는 방법
# 특정한 인덱스에 있는 값을 제거하는 방법(바로 적용)
del w[2] # PL/SQL DEL 했을 경우 ROW가 비워있다. PYTHON의 경우에는 다른 값을 채워져 있다.
w.pop(2)
w
subject = ['SQL', 'PL/SQL', 'SQL', 'PYTHON', 'LINUX', 'SQL']
len(subject)
subject.count('SQL')
# 변수명.count(값) : 리스트 안에 있는 값의 수를 리턴하는 함수
# 리스트 변수 안에 값을 찾아 위치값을 리턴하는 함수, 없으면 오류발생
index(찾을값, 시작위치인덱스(0 기본값))
# 오류발생
# subject.find('SQL') # 리스트 변수에서는 find 함수를 사용할 수 없다.
subject.index('SQL') # 있다면 처음으로 나오는 위치정보 출력
subject.index('SQL', 0) # 기본값
subject.index('SQL', 1)
subject.index('SQL', 3)
subject.index('SQL', 6)
# del 변수명 : 리스트 변수에 있는 값을 찾아 제거하는 방법
subject = ['SQL', 'PL/SQL', 'SQL', 'PYTHON', 'LINUX', 'SQL']
del subject[subject.index('SQL')]
del subject[subject.index('SQL')]
del subject[subject.index('SQL')]
subject
# 변수명.pop() 리스트 변수에 있는 값을 찾아 제거하는 방법
subject = ['SQL', 'PL/SQL', 'SQL', 'PYTHON', 'LINUX', 'SQL']
subject.pop(subject.index('SQL'))
subject.pop(subject.index('SQL'))
subject.pop(subject.index('SQL'))
subject
# 변수명.remove() 리스트 변수에 있는 값을 찾아 제거하는 방법
subject = ['SQL', 'PL/SQL', 'SQL', 'PYTHON', 'LINUX', 'SQL']
subject.remove('SQL')
subject.remove('SQL')
subject.remove('SQL')
subject
# 중첩리스트
x = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
len(x)
type(x)
type(x[0])
len(x[3])
type(x[3]) # ['a', 'b', 'c']
type(x[3][0])
x[3]
x[3][0]
x[3][1]
x[3][2]
x[3][0:2]
x[3].append('d')
x[3].pop()
x.append(6)
x.pop()
x
x[3][0] = x[3][0].upper()
x[3][1] = 'B'
x
# 리스트 변수 값을 지우는 함수
x.clear()
x
x.append(1)
x.append(2)
dir()
id(x) # 메모리 주소, 변수=임시메모리
del x # 변수 삭제
dir()
# PL/SQL ORDER BY절 asc, desc
# 리스트 변수 안에 값을 기준으로 오름차순 정렬 (바로 적용)
x = [1,5,2,4,3]
x.sort()
x
# x.sort(reverse=False) 기본값
# 리스트 변수 안에 값을 기준으로 내름차순 정렬 (바로 적용)
x = [1,5,2,4,3]
x.sort(reverse=True)
x
# 리스트 변수 안에 값을 기준으로 오름차순 정렬(미리보기)
x = [1,5,2,4,3]
sorted(x)
x
y = sorted(x)
y
# 리스트 변수 안에 값을 기준으로 내름차순 정렬(미리보기)
x = [1,5,2,4,3]
sorted(x, reverse=True)
x
y = sorted(x, reverse=True)
y
# 리스트 변수 안에 값을 역순으로 정렬(미리보기)
x = [1,5,2,4,3]
x[::-1]
# 리스트 변수 안에 값을 역순으로 정렬(바로적용)
x = [1,5,2,4,3]
x.reverse() # 역순
x
13//2
13%2
divmod(13, 2)
type(divmod(13, 2))
2. tuple(튜플)
- 리스트 자료형과 유사하다.
- 리스트와 차이점 : 추가, 수정, 삭제 불가
- 리스트 변수로 사용하고 튜플은 상수처럼 사용한다.
- 변수는 변하는 값들을 사용하고 상수는 한 번 입력받은 값만 사용해야 한다.
- 중첩할 수 있다.
- 서로 다른 데이터 타입을 가질 수 있다.
- 출력(console) : ()
- 바로 적용하는 함수는 오류발생. 미리보기용 함수는 가능
lst = ()
type(lst)
tuple_1 = ()
type(tuple_1)
tuple_2 = (10, 20 ,30)
type(tuple_2)
tuple_3 = 10, 20, 30
tuple_3
type(tuple_3)
x = (10)
x
type(x) #int
y = (10, )
y
type(y) #tuple 타입
len(y)
x = ('a', 'b', ('ab', 'bc') )
x
x[0]
x[1]
x[2]
x[2][0]
x[2][1]
x = ('a', 'b', (1, 2) )
x
x[0]
x[1]
type(x[2])
type(x[2][0])
type(x[2][1])
type(x)
x = (1,2,3)
y = (4,5,6)
# 여러 튜플을 하나로 결합하는 방법
z = x + y
z
type(z)
# 오류발생
x.extend(y) #추가 불가, 새로운 값 불가
z[0] = 10 # 수정 불가
del z[0] # 삭제 불가
z.pop()
z.remove(1)
z.append(7) # 추가 불가
z.sort() # 정렬불가
sorted(z) # 정렬은 미리보기
type(sorted(z))
sorted(z, reverse=True)
z.reverse() # 오류발생, 역순
z[::-1] # 튜플에서 역순으로 출력하는 방법
z.index(1)
z.index(5)
z.count(1)
# 변수 한번에 적용(tuple)
x = 1,2,3
one, two, three = x
one
two
three
type(x)
# 변수 한번에 적용(list)
y = [1,2,3]
one, two, three = y
one
two
three
type(y)
one, two = y[0:2]
3. dictionary
- key, value 값을 가지는 자료형
- 출력(console) : {}
- {key1:value1, key2:value2, ... keyn:valuen}
dic = {}
type(dic)
dic = {'이름':'홍길동', '전화번호':'010-1000-0001', '주소':'서울'}
dic
dic.keys()
dic.values()
dic.items()
dba ={"db":"oracle", "개발자":"sql", "성능":"sql튜닝"}
dba['db']
# 없는 데이터로 오류발생
dba['관리']
# key, value 추가
dba['관리'] = "백업&복구"
# 수정
dba['관리'] = ["객체관리", "유저관리", "메모리관리", "스토리지관리", "백업&복구"]
dba
dba['관리']
# 변수명.get() : key 유무 판단
dba.get('관리')
dba['진단'] # key 가 없으면 오류
dba.get('진단') # key 가 없으면 None(null) 리턴한다.
# key 유무
'개발자' in dba.keys()
'진단' in dba.keys()
# value 유무
'sql' in dba.values()
'plsql' in dba.values()
'객체관리' in dba.values() # false
["객체관리", "유저관리", "메모리관리", "스토리지관리", "백업&복구"] in dba.values() # list 형태
'객체관리' in dba['관리']
# list로 형변환
v = dba.values()
type(v)
list(v)
type(list(v))
list(dba.values())
list(dba.keys())
list(dba.items())
4. 집합(set) : 미리보기
- 리스트와 비슷하다
- 단, 인덱스가 없다.
- 유니크한 값, 중복을 허용하지 않는다. 유일한 값만 저장
- {}
- set()
s = {1, 1, 1, 1, 2, 3, 4, 2, 5, 5}
s
type(s)
# 오류발생
s[0] # 집합 자료형은 인덱스가 없기 때문에
lst = [1,1,1,1,2,3,4,2,3,5,5]
lst
lst.count(1)
lst.count(2)
set(lst) # 집합 자료형으로 변환 미리보기
tuple_1 = [1,1,1,1,2,3,4,2,3,5,5]
z = set(tuple_1)
z
x = [1,2,3,6]
y = [1,2,3,4,5]
x.extend(y) # PL/SQL UNION ALL
x
set(x)
# 합집합 : 중복값 출력
x = [1,2,3,6]
y = [1,2,3,4,5]
x.union(y) # 오류발생 , union 함수는 집합 자료형에서 사용하는 함수
set(x).union(set(y)) # list자료형
x = {1,2,3,6}
y = {1,2,3,4,5}
x.union(y) #set 자료형
y.union(x)
x|y # union = | 같은 기능
# 교집합
x.intersection(y)
y.intersection(x)
x&y
# 차집합
x.difference(y)
x - y
y.difference(x)
y - x
# 대칭차집합(symmetric difference) : 중복값제거한 값
# PL/SQL NOT EXISTS
(x-y) | (y-x)
(x-y).union(y-x)
x.symmetric_difference(y)
x^y
# 서로소집합(disjoint set) : 두 집합에 고통된 원소가 없는 집합
{1,2,3}.isdisjoint({1,2,3})
{1,2,3}.isdisjoint({4,5,6})
# 부분집합(subset) :⊂ 부분집합
x = {1,2,3}
y = {1,3}
# y ⊂ x 이면 집합 y는 x의 부분집합이다.
y <= x
y.issubset(x)
x <= y
x.issubset(y)
# 상위집합인지 확인하는 함수
x.issuperset(y)
# 오류발생
x[0] # 집합은 인덱스를 사용할 수 없다.
# 집합에 있는 원소를 삭제
x.remove(1)
# 원소 추가
x.add(5)
# 여러개 원소 추가
x.update([6,7,8])
# 집합에서는 수정 불가. 즉 삭제하고 추가하면 된다.
5. bool
- 참(True), 거짓(False) 를 나타내는 자료형
x = True
y = False
type(x)
type(y)
# 조건제어문에서 True 표현 방법
1
bool(1)
bool(100)
bool(-1)
bool("홍길동")
bool("python")
bool([1,2,3])
bool((1,2,3))
bool({1,2,3})
not 0 # 0 = True
not None
# 조건제어문에서 False 표현방법
bool(0)
bool(None)
bool([])
bool({})
bool(())
bool('')
bool("")
not 1
not -100
■ 파이썬 변수 복제 주의
x = [1,2,3]
y = x # 복제, x변수와 y변수는 동일한 메모리 공간을 사용한다.(메모리 절약)
x[0] = 10 # 문제점: y변수에 영향을 준다.
x
y
id(x) # 2378948673152
id(y) # 2378948673152
x = [1,2,3]
z = x[:] # 변수를 복제할 때 슬라이싱을 이용해서 복제하면 틀린 메모리공간을 사용한다.
id(x) # 2378951396288
id(z) # 2378951530944
x[0] = 10
x
z
import copy
x = [1,2,3]
w = copy.deepcopy(x) # 변수를 복제할 때 슬라이싱을 이용해서 복제하면 틀린 메모리공간을 사용한다.
id(x) # 2378951534208
id(w) # 2378951539392
■ 조건제어문 : if문
if 조건문: True 일 때 수행하는 문장 |
if 조건문: True 일 때 수행하는 문장 else: False 일 때 수행하는 문장 |
if 조건문1: 조건문1 True을 수행하는 문장 elif 조건문2: 조건문2 True을 수행하는 문장 elif 조건문3: 조건문3 True을 수행하는 문장 else: 기본값: 조건에 걸리는 부분이 없을 경우 수행하는 부분 |
f 10:
print('오늘 하루도 많이 웃자!!')
if True:
print('오늘 하루도 많이 웃자!!')
if 'oracle':
print('오늘 하루도 많이 웃자!!')
if False:
print('오늘 하루도 많이 웃자!')
else:
print('내일도 많이 웃자')
x = 10
if x == 10:
print('오늘 하루도 {}배 행복하자'.format(x))
x = 20
if x == 10:
print('오늘 하루도 {}배 행복하자'.format(x))
else:
print('오늘 하루도 {}배 행복하자'.format(x))
x = 12
if x > 10 or x%2 == 0:
print('참')
else:
print('거짓')
■ 변수의 빈 문자열 비교
num = ''
# 검색할 때
num == ''
num == ""
num == None # 빈 문자열을 None으로 비교하면 False
x = None
x
type(x)
x == None
x == '' # None으로 있는 변수를 빈문자열로 비교하면 False
x == "" # None으로 있는 변수를 빈문자열로 비교하면 False
# isnumeric() : 문자값이 숫자형 모습인지 체크하는 함수
x = 1
type(x)
x.isnumeric()
x = '1'
type(x)
x.isnumeric()
# isinstance : 변수의 타입을 체크하는 함수
x = 1
isinstance(x, int)
isinstance(x, float)
isinstance(x, str)
x = 1.2
isinstance(x, int)
isinstance(x, float)
isinstance(x, str)
x = True
isinstance(x, int)
isinstance(x, float)
isinstance(x, str)
isinstance(x, bool)
x = False
isinstance(x, int)
isinstance(x, float)
isinstance(x, str)
isinstance(x, bool)
# None(null, 서로 다른 type) 계산
sal = 1000
comm = None
# 오류발생, comm 이 None 이여서
sal * 12 + comm
if comm == None:
annual = sal * 12
else:
annual = sal * 12 + comm
if comm is None: # is null
annual = sal * 12
else:
annual = sal * 12 + comm
print(annual)
# 변수 = 참값 if 조건 else 거짓
annual = sal * 12 if comm == None else sal * 12 + comm
print(annual)
annual = sal * 12 if comm is None else sal * 12 + comm
print(annual)
■ 반복문
1. while문 : 조건이 True 인 동안에 반복을 수행한다.
While 조건문:
반복 수행할 문장
i = 1
while i <= 10:
print(i)
i = i + 1
i = 1
while i <= 10:
print(i)
i += 1
# continue문 : continue 문을 만나는 순간 다음 반복을 수행한다.
i = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
print(i)
# break문 : 반복문 종료하는 문
i = 0
while True:
if i == 0:
i = 1
elif i > 10:
break # PL/SQL exit문
print(i)
i += 2
'Language > Python' 카테고리의 다른 글
231115 Python 함수 (1) | 2023.11.20 |
---|---|
231115 Python_for문, range() (1) | 2023.11.20 |
231113 Python import, print, format, 변수, input, 사칙연산, 비교연산자, 논리연산자, 인덱싱(indexing), 슬라이싱(slicing) (1) | 2023.11.13 |
231113 Python의 특징 및 사용법 (0) | 2023.11.13 |
231113_Python 환경설정 및 설치 (1) | 2023.11.13 |