goormNLP [Python Programming]
Auspice by Goorm, Manage by DAVIAN @ KAIST
Lecture 4: Data StructurePermalink
ListPermalink
- 배열: 일련의 데이터를 하나로 묶음. (파이썬에서 중요한 데이터 자료 중 하나)
- 파이썬 배열은 대괄호로 선언.
[value 1, value 2, ...]
- 길이가 정해져 있지 않음.
List indexingPermalink
- seq[index] 형태로 요소 하나 접근.
- 0부터 숫자세기 시작.
- 음수 가능. (뒤에서 부터 접근)
List SlicingPermalink
- seq[start: end: step] 형태로 List 자르기.
- end번째는 포함하지 않음. ex) [3:5] -> 3이상 5미만으로 생각하면 쉬움.
List OperatorsPermalink
a + b # 리스트 합치기.
a[0] # 리스트 내 값 바꾸기.
a * 2 # 곱하기로 리스트 반복.
'value' in List # 리스트 안에 요소가 있는지 확인. (True or False)
len(seq) # 내장 함수를 이용하여 리스트 길이 구하기.
seq.append('value') # 맨 뒤에 요소 추가, 메소드 형태
seq.extend([5,6]) # 맨 뒤에 리스트 추가, seq += [5, 6]
seq.insert(1, 1.5) # 1번째에 1.5 삽입. (index, val)
del seq[1] # 1번재 요소 삭제.
seq.remove('val') # 원하는 값을 삭제.
Reserved words & Built-in Functions & MethodsPermalink
예약어Permalink
- 일종의 문법적인 요소.
- 괄호를 쓰지 않음.
- 재정의 불가능.
example)
del
,if ... else ...
,assert
내장 함수Permalink
- 기본 정의된 함수.
- 별개의 함수 사용.
- 재정의 가능.
- 편의성 향상.
example)
len()
,sum()
,range()
메소드Permalink
- 객체 내에 정의된 함수.
- .method()으로 접근.
- Overriding.
- 해당 객체를 다룸
example)
.append()
,insert()
,.extend()
Tuple: 불변 타입 리스트(Immutable List)Permalink
- List는 선언 시
[ ]
을 사용하고, Tuple은( )
을 사용, 문맥에 따라 괄호 생략 가능. - List의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용.
- 일반적으로 함수에서 2개 이상 요소를 반환할 때 사용.
- Tuple 안의 요소는 가변 타입일 수 있음.
Packing & UnpackingPermalink
- 패킹: 여러 데이터를 묶기.
- 언패킹: 묶인 데이터를 풀기.
>>>t = [1,2,3,4,5]
>>>a,b,c,_,_ = t
>>>c
3
>>>a, *b, c = t # *(Asterisk)로 남는 요소를 리스트로 한번에 남기기 가능.
>>>a,b,c
(1,[2,3,4],5)
DictionaryPermalink
- 일종의 매핑을 위한 데이터 구조.
- Key -> Value 형태로 구현.
- 불변(Immutable) 타입으로만 이루어져 있으면 Key로 사용 가능.
example)
{Key1 : Value1, Key2 : Value2, ...}
형태로 선언.
>>> d = {'한국어' : 0, '영어' : 1, '중국어' : 2}
>>> d.items()
dict_items([('한국어',0),('영어',1),('중국어',2)])
>>> d.keys()
dict_keys(['한국어','영어','중국어'])
>>> d.values()
dict_values([0,1,2])
Dictionary는 hash로 구현: indexing 속도가 O(1).
SetPermalink
- Dictionary의
Key
만 모여 있는 형태 -> 집합형. - 수학적 집합 연산자가 존재. (교집합, 합집합, 차집합, 배타적 합집합)
Lecture 5: Condition & LoopPermalink
1. Conditional StatementsPermalink
- 특정 조건이 만족될 경우 실행할 문항을 설정.
if [조건]
- 조건을 검사하여 code block을 실행.elif [조건]
- 이전 조건과 맞지 않을 경우 조건을 다시 검사 및 실행.else
- 이전 모든 조건이 맞지 않을 경우 실행.- 비교 연산자와 논리 연산자를 사용할 수 있음.
1.1 Ternary operators: 삼항 연산자Permalink
[Value 1] if [Condition] else [Value2]
- Condition이 참이면 Value1을 // 거짓이면 Value2를 반환.
- 연산자로 사용.
While StatementPermalink
- 반복해서 구문을 수행.
- 조건을 만족하는 동안 출력.
i = 1 # 초기 값 while i < 10: # i가 10보다 작은 동안 print(i) # i 출력 i += 1 # i에 1씩 더함.
For StatementPermalink
- Python의 For문은 주어진 객체를 순환하는 개념.
for [Element] in [Iterable]
의 형태로 사용.Break문
으로 가장 바깥의 반복문을 나가는 것이 가능.
for i in range(100):
if i % 17 == 0:
break
print(i) # 결과 None
Continue문
으로 가장 바깥의 반복문의 처음으로 되돌아가기 가능.
for i in range(100):
if i % 17 == 0:
continue
print(i) # 결과 1,2,3,4,,,16,18,19 (17의 배수 스킵).
Else문
으로 반복을 완전히 돌았을 경우 실행되는 block 지정가능.
for i in range(10):
print(i)
else:
print('Loop complete')
Break문
으로 중간에 나오게 되면Else문
이 실행되지 않음.
for i in range(10):
print(i)
if i > 5:
break
else:
print('Loop complete without break')
Lecture 6: FunctionPermalink
FunctionPermalink
- 함수: 명령을 수행하는 일종의 기능 단위.
- 코드를 논리적으로 분리, 캡슐화 용도.
- 필요한 경우 반복적으로 호출.
- Return이 없는 경우 None 반환.
def [function]([parameter1],[parameter2])
function-명령 1
function-명령 2
return [value]
value = function(arg1, arg2)
Variable ScopePermalink
- 파이썬에서는 상위에 정의된 변수는 언제나 참조 가능.
-
함수 내에 정의된 변수 이름은 그 함수 내에서만 유효.
Global: 최상위에 선언, 다른 파일에서 접근 가능.
Local: 함수 안에 선언, 상위 함수에서는 접근 불가.
스파게티 코드의 주원인이기에 사용하지 않는 것을 권장함.
Decorator: 꾸밈자Permalink
- 함수 하나를 인자로 받아 같은 형태의 함수를 반환하는 함수.
- @을 사용하여 함수를 꾸미는데 사용 가능.
- Class를 사용할 시 Decorator에 인자 추가 가능.
def print_decorator(function):
def print_closure(var):
print("Input : ", var)
out = function(var)
print("Output : ", out)
return print_closure
@print_decorator
def add(var):
return var + 2
add(10)
Recursive FunctionPermalink
- 자기 자신을 호출하여 반복적으로 수행.
- 수학의 점화식과 동일.
Type hintsPermalink
- 파이썬은 동적 타이핑 -> 다소 interface를 알기 어려움.
- 함수에 타입 힌트 제공이 가능.
[function]([var]: [type], ...)
의 형태
def multply_text(text: str, n: int) -> str:
return text * n
댓글남기기