반복문과 제어문
.반복문 + 제어문 같이 사용되는 몇 가지 기능
- continue, pass, break (최근의 코테의 앞 문제 유형 → 지식적인 내용보다는 복잡한 상황을 코드로) (case by case에 대한 유형들이 많아지는 추세.. 꼼꼼하게 파악해야함)
- pass
- 그냥 아무것도 안 하고 문법적인 구조만 맞춰줄때
- 동일 범주 아래 작성된 코드 내용 skip

- continue
- for/while에서 다음 순번으로 강제로 넘길 때

- break
- for/while 다음 순번들이 아무리 많이 남아있어도 완전히 stop
- break
- for/while에서 다음 순번으로 강제로 넘길 때
- pass

⇒ 코테에서 효율적으로 반복문/제어문을 잘 사용해야함
리스트컴프리헨션
- 파이썬틱하게 코드를 작성하는 방법 중 하나
- 여러개의 값을 돌리면서 + 원하는 값을 모을 때
- ----------------------------------------------------------------
- 장점
- 코드가 간결
- 단점
- 너무 중첩하면 가독성 꼬임
- 보통은 1~2개 정도로 for 중첩에서만 주로
- 기능
- 값을 돌려가면서 (for), 원하는 값을 모은다(list)
- 형식
- 모을 값 for i in 여러개 ++++
a = ["a", "b", "c", "d", "e", "f", "g", "c", "i"] #ex) a의 리스트에서 c인 원소가 없는 리스트를 만들어 보세요 b = [] for i in a: #-> 정수인덱스도 가능한데.. 굳이 싶음/ 값 자체로 롤링 if i != "c": #개별 원소가 c가 아닐 때 무슨 일을 할지 b.append(i) #else: #pass print(b)
- 위의 코드를 리스트컴프리헨션 형태로
# 잘 생각 : 전체를 롤링하면서 c가 아닌 것을 모으자 [i for i in a if i != "c"] - 예제
#ex) 위의 있는 리스트에서 #홀수번째 위한 값들만 추출해서 뒤에 'h'라는 문자를 추가해주세요 a = ['a', 'b', 'c'. 'd', 'e', 'f', 'g', 'c', 'i'] #일반적인 스타일 for i in range(len(a)): if i % 2 == 0: print(a[i] + "h") #LC #전체 데이터를 필터링 [a[i] + "h" for i in range(len(a)) if i % 2 == 0] #참고) 한번에 다 사용할 enumerate # -> 정수 인덱스: 필터링 조건 #-> 값 자체: 조작해서 모을 값 for i, v in enumerate(a): #[(i,v), (i,v)] if i % 2 == 0: print(v + "h") #LC [v + "h" for i, v in enumerate(a) if i % 2 == 0]
#ex) a의 원소들 중에서
#짝수번째 값은 e를 붙이고(0,2,4...)
#홀수번째 값은 o를 붙이고(1,3,5...)
#=> ["ae","bo","ce","do",...]
#참고) 앞의 문제와 차이점 : case by case
for i,v enumerate(a) :
if i % 2 == 0 :
print(v + "e")
elif i % 2 == 1 :
print(v + "o")
else:
print("입력이 이상해요")
for i,v enumerate(a) :
if i % 2 == 0 :
print(v + "e")
else:
print(v + "o")
#위와 결과는 같은 경우인데 매번 돌아가니까
#비효율성... 코드가 조건을 2번 체크하니까
for i,v enumerate(a) :
if i % 2 == 0 :
print(v + "e")
if i % 2 == 1 : # vs elif와 구분
print(v + "o")
[v + "e" if i % 2 == 0 else v + "o" for i,v in enumerate(a)]

- 정리
- 리스트컴프리핸션은 파이썬으로 할 때 자유롭게 하면 됨
- 돌리는 것은 다양하게 함
- a
- range()
- items()
- enumerate()
- etc…
- 조건이 있다면
- [모을 값 for 롤링 (if 조건)]
- [(모을 값1 ← 조건 만족시) if 조건 else (모을 값 2 ← else에 대한) for 롤링]
함수
- 어리 중심의 코드 작성!!!!
- ==> 코드 for ---> 함수 ---> 클래스 ---> 패키지!!!
- 가장 기본적인 구조화: 함수! (y=f(x))
- 3가지 요소
- 입력(x)
- 출력(y)
- 입출에 대한 관계(f) → 무엇을 입력 받아서 어떤 일을 처리해서 뭘 내보낼까
- 코드 쓰면서 유의할 것
- 코드를 읽을 때 기능 중심으로 읽거나 흐름 파악하고, 작성하는게 유용 +한 번만 만들어주면 여러번 재사용이 가능
- 플젝/팀플 ==> 시간이 급급해서,,,코드,,,줄줄줄~~~~~~~
- => 코드를 정리하시는 습관!!!!
- 포폴 + github ==> 코드만 봐도,,,잘 하는 못하는지 대충 파악이 됨!!!
- 3가지 요소
- 함수를 파이썬으로 만드는 구조 : y = f(x)
-
def 함수명(입력1, 입력2,,,,,,): 무엇을 할지 기술 --> 기본 코드,,알고리즘........ return 출력1, 출력2# 예) 파이썬의 더하는 함수 : sum() # ---> 불편한 점 : sum( [10,20] ) # ---> 내가 원하는 더하는 함수 : sum2(10,20) --> 30 # 입력 : 숫자 2개 # 기능 : 입력 숫자 2개를 더해서,,,출력으로 전달!!! # 출력 : 입력 2개에 대한 더한 값.. #-> 이런 기능 여러번 쓸 것 같다. ..(재활용!) def sum2(a,b): # 입력으로 대표화를 한 a,b를 가지고,,무엇을 할지 기술!!! # + 파이썬 문법 + 코테 같은 경우 알고리즘 + 문제 상황.... # + 입력 데이터,,,X Feature!!! result = a + b return result # 참고) 함수 내에서 만든 변수들은,,,,특별한 조치를 하지 않는 이상... # 함수 내에서만 사용이 됨!! 생존이 됨!!!!sum([10,20]) #30 sum(10,20) #오류남, 리스트로 안 감싸면 안 됨def sum2(a,b): result = a + b return result a=999 sum2(10,20) #sum2 안의 a와 밖의 a는 영향 없음 # 30- 더하는 것을,,,,여러개에 대해서도 대응이 가능한 함수로 업그레이드!!!
# 더하는 것을,,,,여러개에 대해서도 대응이 가능한 함수로 업그레이드!!! sumrandom(10) : 10 sumrandom(10,20) : 10+20=30 sumrandom(10,20,30,40) : 10+20+30+40 ..... # ==> 입력을 몇 개를 주던간에,,,,입력들을 다 더해주는 함수를 만들면 좋겠다 # 핵심 : 입력이 가변적으로 여러개가 들어와도 처리를 할 수 있도록 설계 # 가변적인 입력을 처리 : *args --> 파이썬의 리스트처럼 # **argsdef sumdandom( *args): # *args : args는 파이썬의 리스트처럼 생각!!! # args = [10,20,30]. args=[1,1,2,3,3,3,3,4] # --> 할 일 : 입력으로 들어오는거 싹 다 더하기!! # 개별 원소들을 다 꺼내가면서,,,누적합( 변수 생성!!!) temp = 0 #입력에 대한 모든 것을 롤링 !! for --> 값 자체 for i in args: temp += i ####### return temp- 참고) 출력이 여러개일 수 있음
- 입력 2개 숫자
- 출력: 2개 입력 숫자를 가지고 +,-,*,/ 4개 사칙연산 결과
def mutiple(a,b): return a+b, a-b, a*b, a/bmultiple(10,20) # --> 여러개 출력인 경우 : 자료형---> tuple 묶어서 return!!!
- def 함수명(입력인자들) : # x =0, (돈=2000, 음료=코카콜라) 무엇을 할지 # f: x~~~ y return 출력들 # y :
- 여기까지는 FM적인 함수에 대한 이야기
- 대충적인 AM 함수도 존재
- 뭔가 기능적인 룰/규칙을 표현하는 것으로 사용!!!!!!
- 한 번 정도,,,사용하고 땡...…
- 언제?
- *** 데이터 전처리를 할 때
- ***코테에서 정렬에 대한 내가 구현!!! → 주어진 정렬 조건을 작성할 때
- ex) 데이터 전처리 : id_00001, id_00002, id_00003 ==> 1,2,3
- 규칙!!! id_ 문자 제거 하고 ---> 000001을 1로 숫자화!!!!
- 규칙에 대한 것을 간단히 람다함수로 표현!!!!
- ex) 두 숫자 더하기
- 정석으로
def sum2(a,b): temp = a+b return temp sum2(10,20) #30- 람다함수
# --> 간단하게 기능 중심/규칙 중심으로 "표현" : lambda 함수,,,, (lambda a,b : a+b)(10,20) #30 (lambda a,b : a+b)(30,90) #90
-
'파이썬 > 기초' 카테고리의 다른 글
| [파이썬] 변수 / 자료형 / 연산자 / 조건문_반복문 (3) | 2025.08.01 |
|---|