반복문(while,for) / 일반함수 / 람다 / map
2022. 10. 8. 15:09ㆍDev.Program/Python & R
728x90
======== test3.py
제어문 - 반복문 ( while, for … )
< while 문 >
- 들여쓰기 띄우고 반복할 문장 적기
< break >
- 원래 무한반복 되어야 하지만 break 구문을 통해 반복문을 빠져나온다.
< continue >
- 1 ~ 10 다 나옴
- 추가 하면
- 3의 배수를 제외하고 나옴!
< for 문 >
for 변수 in 리스트(튜플, 문자열): 반복할 명령1 반복할 명령2 |
- 기본 문법
> 점수 합계 구하기
li = [85, 95, 90, 80, 75] sum = 0 # 합계 저장할 변수 for i in li: sum += i print("항목 개수:", len(li)) print("점수 합계:", sum) print("점수 평균:", sum/len(li)) |
- 이런식으로 담아올 수도 있다!
< range(시작번호, 끝번호, 증가값) >
> 구구단 2단 출력해보기
dan = 2 for i in range(1, 10, 1): print(dan, "*", i, "=", dan*i) |
for i in range(2, 10, 1): print("<", i, "단 >") for j in range(1, 10, 1): print(i, "*", j, "=", i*j) |
- 중복 for문도 가능!
< 한줄 for문 >
# 한줄 for문 # [반복 실행문 for 변수 in 리스트] a = [1, 2, 3, 4] result = [i*3 for i in a] print(result) |
- result 가 리스트 형태로 출력됨!
# [조건에 만족하는 반복실행문 for 변수 in 리스트 if 조건] # 2의 배수를 구해서 i*3 result = [i*3 for i in a if i % 2 == 0] print(result) |
# [반복실행문 for 변수1 in 리스트1 for 변수2 in 리스트2] # [반복실행문 for 변수1 in 리스트1 if 조건1 for 변수2 in 리스트2 if 조건2] # 구구단 결과 result = [] result = [dan*i for dan in range(2, 10, 1) for i in range(1, 10, 1)] print(result) |
======== test4.py
< 일반함수 >
< 기본문법 >
- 탭이 중요! 탭만큼 띄워져야 인식함
# 두 수를 받아서 사칙연산 출력하는 함수 def cal(a, b): print(a + b) print(a - b) print(a * b) print(a / b) # 함수 호출 print(cal(1,2)) |
eng = [90, 80, 70, 60, 50] # 점수를 받아 합을 구해서 리턴하는 함수 sum2(배열받는 변수) def sum2(eng2): sum = 0 for s in eng2: sum += s return sum # 함수 호출 print(sum2(eng)) |
< 여러 개의 입력값을 받는 함수 >
> 파이썬에만 있는 기능
# 함수의 매개변수 *변수 - 받는 값에 따른 튜플(값을 바꿀 수 없는 배열) 변수 def sum_many(*a): # print(a) sum = 0 for b in a: sum += b return sum # 함수 호출 print(sum_many(1,2,3)) print(sum_many(1,2,3,4,5,6)) print(sum_many(1,2,3,4,5,6,7,8,9,10)) |
< 함수 초기값 설정 >
# 함수 안에 매개변수에 초기값 설정 def myfun(name, old, man = True): print(name) print(old) print(man) # 초기값 있으면 함수호출시 생력가능(마지막 인수만 가능) myfun("홍길동", 20, True) myfun("이순신", 30) |
- 이순신은 마지막 값을 안넣었는데 초기값인 True 가 나옴
⇒ 마지막 값만 생략이 가능하다! (중간 값은 생략할 수 없음(
< ★람다(lambda)함수 >
def sum(a,b): return a+b print(sum(10,20)) |
- 원래 우리는 이렇게 쓰는데 이걸 람다함수로 바꿔보자
# 람다 lambda 함수 : 한줄 함수 # 함수이름 = lambda 매개변수, 매개변수 : 실행문 sumlam = lambda a,b: a+b print(sumlam(10,20)) |
- 똑같은 결과값 출력됨!
# 람다 함수 square() 2**3 변수**변수 두 수를 받아서 2의 3승을 구해서 리턴 square = lambda a,b: a**b print(square(2,3)) |
< 람다함수를 리스트에 넣기 >
# mylist = [람다함수, 람다함수] # mylist = [두 수를 더하는 람다함수, 두 수를 곱하는 람다함수] mylist = [lambda a,b:a+b, lambda a,b:a*b] print(mylist[0](3,4)) print(mylist[1](4,5)) |
- mylist[0]은 +를 수행하고, mylist[1]은 *를 수행함!
< ★map 함수 >
- 파이썬 내장함수
< 기본 문법 >
map(람다함수, 리트스자료) |
> two_times 함수 정의 : 일반함수로 일단 만들어보기
# [1, 2, 3, 4] * 2 => [2, 4, 6, 8] # 함수 two_times(리스트변수) # 리스트 변수 result=[] # for # result 리스트 값 추가 result.append(값*2) # 리턴 result def two_times(li): result = [] for i in li: result.append(i*2) return result print(two_times([2, 4, 6, 8])) |
- 이걸 map 함수를 이용하면 한줄로 코드가 간단해짐
> two_times2 함수 정의 : 하나의 값을 받아서 받은 값에 *2 해서 그 값을 리턴
def two_times2(a): return a*2 print(two_times2(3)) |
- 일반 함수
> two_times3 람다 함수 정의 : 하나의 값을 받아서 받은 값에 *2 해서 그 값을 리턴
two_times3 = lambda a:a*2 print(two_times3(3)) |
- 람다 함수
- 결과는 동일하다
> map 함수를 이용해서 만들어보자
# map(람다함수, 리트스자료) => 결과 리스트 li1 = list(map(lambda a:a*2, [1,2,3,4])) li2 = list(map(two_times2, [1,2,3,4])) li3 = list(map(two_times3, [1,2,3,4])) print(li1) print(li2) print(li3) |
- 코드가 한줄로 간단해진다! 결과는 전부 동일함
- 보통은 li1 = list(map(lambda a:a*2, [1,2,3,4])) 이 형태를 가장 많이 씀!
< filter 함수 >
- 파이썬의 내장함수
- 배열에서 내가 원하는 부분만 걸러서 보여줌
< 기본 문법 >
filter(조건람다함수, 리스트자료) |
- 조건이 있는 람다함수를 받음
# filter 함수 : 배열에서 내가 원하는 부분만 걸러서 보여줌 # filter(조건람다함수, 리스트자료) => 함수를 통해 결과 리스트 # [1, -3, 2, 0, -5, 6] => 0보다 큰 값 찾기 [1, 2, 6] # pos 일반 함수 def pos(x): return x > 0 # pos2 람다함수 : 하나의 값을 받아서 0보다 큰 값 리턴 pos2 = lambda x:x>0 |
> 필터함수로 만들기
li1 = list(filter(lambda x:x>0, [1, -3, 2, 0, -5, 6])) li2 = list(filter(pos, [1, -3, 2, 0, -5, 6])) li3 = list(filter(pos2, [1, -3, 2, 0, -5, 6])) print(li1) print(li2) print(li3) |
- 결과값은 전부 동일함!
- 이것도 보통 li1 = list(filter(lambda x:x>0, [1, -3, 2, 0, -5, 6])) 이 형태를 많이 씀
< 그 외에 내장함수 >
len()
max()
min()
type()
int()
abs() 절대값
divmod()몫과나머지
pow(2, 3) 2의 3승
range()
…
728x90
'Dev.Program > Python & R' 카테고리의 다른 글
다중 상속 / 함수 / 예외처리 / 파일 읽고 쓰기 (0) | 2022.10.09 |
---|---|
클래스 (0) | 2022.10.09 |
출력 / 리스트 / 튜플 / 딕셔너리 (0) | 2022.10.08 |
주석 / 변수 / 타입 / 연산자 (0) | 2022.10.08 |
파이썬 / 파이참 설치 (0) | 2022.10.08 |