728x90

목차

  1. 연산
    • 산술연산자
    • 비교연산자
    • bool연산자
    • 삼항연산자
  2. 데이터형 변환
  3. 데이터 구조
    • 리스트/튜플/딕셔너리
    • 리스트안의 리스트(튜플안의 튜플)
    • 리스트 내포 표기(List comprehension)
  4. 제어문
    • if문
    • for문
    • while문
    • range
    • break/continue
  5. 함수
    • 함수정의하기
    • 람다함수

** 2021.01.20 일부 오타수정, 리스트 관련 함수 추가 


1. 연산

[목차로 이동]

 

1. 산술연산자

기호/함수 내용 예시
+ 덧셈 -
- 뺄셈 -
* 곱셈 -
/ 나눗셈(소수점이 붙음) 7 / 4  #1.75
% 나눗셈의 나머지 7 % 3  #1
// 나눗셈의 몫 7 // 3  #2
** 지수 7 ** 4  #2401
divmod(a, b) a를 b로 나눈 몫과 나머지 반환 divmod(7,4)  #(1,3)

 


 

2. 비교연산자

연산자  내용
A == B 두 개의 값이 같을 때 True 반환
A != B 두 개의 값이 같지 않을 때 True를 반환
A < B A가 B보다 작을 때 True를 반환
A <= B A가 B 이하일 때 True를 반환
A in B A가 B(리스트, 튜플)에 있을 때 True 반환

 

 


 

3. bool연산자

bool연산자 내용
조건식1 and 조건식2 조건식1과 조건식2가 모두 True일 때 True 반환
조건식1 or 조건식2 조건식1과 조건식2 중 하나가 True일 때 True 반환
not 조건식1 조건식1과 반대 bool값을 반환
(만약 조건식1이 True이면 False를 반환) 

 


4. 삼항연산자

# a=5이기 떄문에 x는 True로 초기화

 

a=5
x="True" if a>0 else "False"

# a가 0보다 크면(a>0, 조건식) x는 'True'

 


2. 데이터형 변환

[목차로 이동]

 

함수 내용 예시
type( ) 데이터형을 반환  type(2.7)  #<class 'float'>
a = "asdf"
type(a)  #<class 'str'>
int( ) 부동소수점형값(소수점 있는 수), 문자열, bool값을
정수로 변환
int(2.6)  #2
int(True)  #1
int(False)  #0
float( ) 수, bool값, 문자열을
부동소수점형값(소수점 있는 수)으로 변환
* 변환 할 수 없는 문자열의 경우 오류 발생
float("2.12")  #2.12
floast(True)  #1.0
floast(False)  #0.0
str( ) 수, bool값을 문자열로 변환 str(7)  #'7'
str(True)  #'True'
bool( ) 수, 문자열을 bool값으로 변환
* 0, 0.0, "" 을 제외한 값을 전부 True로 처리 
bool(3)  #True
bool('')  #False

 


3. 데이터 구조

[목차로 이동]

 

1. 데이터구조-리스트/튜플/딕셔너리

* 데이터구조에 담겨있는 요소에 접근할 때, 필요한 번호는 0부터 시작함

 

데이터 구조 설명 예시
리스트 [ ] 다른 프로그래밍 언어의 배열이라고 생각하면 되며,
요소를 추가, 삭제, 수정 가능(mutable)
lang_list = ['python', 'java', 'c]
튜플 ( ) 리스트와 유사하나,
튜플을 생성하면 변경할 수 없음(immutable)
* 리스트에 비해 소비하는 메모리가 적다
lang_tuple = ('python', 'java', 'c')
딕셔너리 { } key와 value를 갖으며,
key 값으로 value에 접근한다
twice = {
"사나" : "일본",
"미나" : "일본",
"모모" : "일본",
"쯔위" : "대만"
}
twice["미나"]  #일본
리스트 관련 함수
append( ) 리스트 맨 끝에 요소를 추가 list = ['a', 'b', 'c']
list.append('d')
list  #['a', 'b', 'c', 'd']
insert( ) 리스트의 원하는 위치에 요소를 추가 list = ['a', 'b', 'c']
list.insert(1, 'B')
list  #['a', 'B', 'b', 'c']
del list_name( ) 리스트의 특정 요소를 삭제
* 삭제 대상이 리스트만 있는게 아니기 때문에
append, insert 와는 다르게 리스트의 이름을 사용
list = ['a', 'b', 'c']
del list[1]
list  #['a', 'c']
remove() 인수로 들어 온 값을 리스트에서 검색해
제일 앞의 일치된 값을 삭제
list = ['a', 'b', 'c', 'a']
list.remove('a')
list  #['b', 'c', 'a']
clear( ) 리스트 내의 모든 요소를 삭제 list = ['a', 'b', 'c']
list.clear()
list  #[ ]
pop( ) 지정한 위치의 값을 삭제하고
삭제한 값을 반환
list = ['a', 'b', 'c']
pop_list = list.pop(1)
pop_list #b
list  #['a', 'c']
copy( ) 리스트를 복제 할 때 사용한다. list_origin = [1, 2, 3]
list_copy = list.copy()
list_origin[2] = 4
list_origin #[1, 2, 4]
list_copy #[1, 2, 3]

* copy()로 list_origin을 복제했기 때문에
list_origin[2] = 4를 해도
list_copy는 바뀌지 않게 된다.
이유는 list_origin을 copy()한 시점에서 복제가 끝났고 list_copy는 list_origin과 다른값을 참조하기 때문
sorted( ) 인수로 주어진 리스트, 튜플을 정렬해
복사본을 반환(원본의 순서는 바뀌지 않음)
수치의 경우 오름차순,
문자의 경우 알파벳 순으로 정렬
origin=['c','a','b']
sorted(origin) #['a','b','c']
origin #['c','a','b']
sort( ) 원본 리스트를 정렬하며 반환값 없음 origin=['c','a','b']
origin.sort( )
origin #['a','b','c']
리스트 튜플 관련 함수
len( ) 리스트, 튜플에 포함되는 요소의 수를 반환
* 인수의 리스트안의 리스트 구조를 넣으면
바깥쪽 리스트 항목 수를 반환

warrior = ('팔라딘','히어로','다크나이트')
magician = ('불독',썬콜','비숍')
archer = ('신궁','보우마스터')
job = (warrior, magician, archer)

len(job) #3
len(job[2]) #2

in 어떤 값이 리스트, 튜플에 포함되어 있는지
확인할 때 사용하며 True, False를 반환한다
warrior = ('팔라딘','히어로','다크나이트')
'히어로' in warrior #True
index( ) 어떤 값이 리스트, 튜플에
단순히 포함되어 있는지가 아니라
몇번째에 있는지 확인 하고 싶을 때 사용

warrior = ('팔라딘','히어로','다크나이트')
warrior.index('히어로') #1

map( ) map(처리함수, 리스트or튜플)
* 리스트나 튜플의 요소가 처리하는 함수에
 인자로 전달돼 처리한 후 map객체로 반환 
* 객체로 부터 list를 만들기 위해서는
 list() 함수를 사용

list(map(lamda x : x*2, [1,2,3]))
# [2, 4, 6]

filter( ) filter(요소를 고르는 함수, 배열)
* 조건을 만족하는 요소만을 추출할 때 사용 
* 어떤 요소를 걸러낼 함수를 만들 때는 람다식이 적합함


list(filter(lamda a : a%2==0, [0,1,2,3,4,5]))
# [0, 2, 4]

 

 


 

2. 리스트안의 리스트(튜플안의 튜플)

* 파이썬에서는 리스트안의 리스트(튜플안의 튜플)를 사용해 자바에서와 같은 다차원 배열 데이터 구조를 표현

 

 

warrior = ('팔라딘','히어로','다크나이트')
magician = ('아크메이지(불독)','아크메이지(썬콜)','비숍')
archer = ('신궁','보우마스터')
job = (warrior, magician, archer)

print(job[0][0]) #팔라딘

 

* 메이플스토리 초보자가 전직할 수 있는 직업 중 일부를 예시로 가져왔다. job 튜플 안에 warrior, magician, archer 직업 군이 각각 있으며,
' job[0][0] #팔라딘, job[1][0] #불독, job[2][0] #신궁 ' 와 같은 문법으로 각각 데이터에 접근 할 수 있다. 이와 같은 데이터 구조를 표현하는 방법은 튜플과 리스트에서 같다.

 


 

3. 리스트 내포 표기(List comprehension)

 

[식 for 요소이름 in 리스트이름]

[식 for 요소이름 in 리스트이름 if 조건식]

 

[x*2 for x in [1,2,3,4]]
#[2, 4, 6, 8]

[x for x in [0,1,2,3,4,5] if x%2==0]
#[0, 2, 4]

 


4. 제어문

[목차로 이동]

 

1. if 문

*조건식에 0, "",[#비어있는 리스트], (#비어있는 튜플) 은 False로 해석

 

#if

 

#if_else

 

#if_elif_else

 


2. for문

 

take_here = (0, 10, 20)
total = 0
for save_var in take_here :
	total += save_var
print(total) #30

* for save_var in take_here 에서 take_here 자리에 있는 리스트, 튜플의 값을 하나씩 꺼내 save_var에 저장
* save_var에 저장된 값을 갖고 for문 안에 있는 명령문을 실행 
* 리스트, 튜플이 아닌 번호를 사용해하는 상황이라면 range를 사용함 
* 리스트, 튜플, 숫자 뿐 아니라 문자열도 사용할 수 있음( for letter in "hi!" : print(letter) # h i !)

 


 

3. while문

* 조건식이 True인 동안, 정해진 루프를 계속 반복한다. 조건식이 False가 되면 루프를 빠져나와 다음 명령을 실행
* 루프를 빠져나오기 위해 사이클 당 증감하는 변수를 넣어 제어한다.

 

while

 

cnt = 0
while cnt<3:
	print(cnt)
    cnt +=1	#루프를 빠져나오기 위한 제어문
# 0 1 2

 


4. range

* 인수로 받은 숫자를 조건에 받게 반환

range 유형 설명 예시
range(최댓값) 0부터 1씩 증가하고 최댓값 전까지 for index in range(5);
print(index) # 0 1 2 3 4
range(시작값, 최댓값) 시작값부터 1씩 증가하고 최대값 전까지 for index in range(3, 7);
print(index) # 3 4 5 6
range(시작값, 최댓값, 스탭) 시작값부터 스텝만큼 증가하고 최대값 전까지 for index in range(1, 8, 2);
print(index) # 1, 3, 5, 7

 


5. break/continue

* while, for 등 반복문을 벗어날 때 사용
* break는 루프를 벗어나 다음 명령으로 이동
* continue는 루프의 나머지를 건너 뛰고, 루프의 맨 앞으로 되돌아갈 때 사용

break
continue


5. 함수

[목차로 이동]

 

1. 함수 정의하기

 

* 원하는 함수를 위와 같은 형식으로 정의해서 사용할 수 있으며, 파라미터가 없을 때는 함수명 뒤 파라미터를 생략하고, 반환값이 없을 때는 return을 생략할 수 있음

 


2. 람다함수

 

 

* 람다 함수는 def로 정의하는 함수와 다르게 일회성 함수라는 성질이 강함
* 주로 map, filter, sorted 등과 같이 사용됨

check_even = lamda x : x%2 ==0
checnk_even(2)
#True

list(map(lamda x : x*2, [1,2,3]))
# [2, 4, 6]

list(filter(lamda a : a%2==0, [0,1,2,3,4,5]))
# [0, 2, 4]

sorted(['bc','a','def'], key=lamda x : len(x))
#['a', 'bc', 'def'] 

sorted(['bc','a','def'], key=lamda x : len(x), reverse=True)
#['def', 'bc', 'a']

 


** 그 외 함수

[목차로 이동]

 

함수 설명 예시
max(a, b) a와 b 중 큰 값을 반환 max(2, 6)  #6
min(a, b) a와 b 중 작은 값을 반환 min(2, 6)  #2

 


 

728x90

+ Recent posts