[TIL]Python. For loops & While

여주링·2020년 11월 24일
0

Python

목록 보기
7/15

for & While 반복문

for 반복문(loops)이란?

쉽게 말하면 컴퓨터에 반복을 지시하는 방법을 말함. 같은 코드를 붙여넣기하는건 비효율적이라 이때 사용하는 for구문을 사용한다

For 반복자 in 반복할수 있는것:
	코드

(반복할 수 있는 것에는 문자열, 리스트, 딕셔너리, 범위 등이 있음)
for 구문에서는 리스트가 가지고 있는 요소의 수 만큼 for 구문에 속해있는 코드를 실행한다. 이를 iteration이라고 함(5개의 요소를 가지고 있으면 5 iterations라고 함)

While 반복문(Loops)이란?

for 은 list나 set, dictionary 등의 data structure 등을 기반으로 되는데
가끔은 list같은 data structure 기반이 아니더라도 범용적으로 코드블록을 반복해야 할 때가 있음.
이럴 경우 while 반복문을 사용한다.

while 구문은 특정 조건문이 True일동안 코드블록을 반복 실행 한다

while <조건문>:     
    <수행할 문장1>     
    <수행할 문장2>     
    <수행할 문장3>     
    ...
    <수행할 문장N> 

While Else

파이썬의 while문은 else 문이 추가 되는 경우가 있음(if문의 else문과 유사)
While문의 else 문도 while의 조건문이 False 이면 실행됩니다.

number = 0 

while number <= 10: 
	print(number) number += 1 

else: 
	print(f"while 문이 끝나고 난 후 의 number : {number}") 

0 1 2 3 4 5 6 7 8 9 10 while 문이 끝나고 난 후 의 number : 11.

For/While 언제 사용하는게 좋을까?

<for문을 사용하는 경우>
반복횟수가 정해진 경우(주로 배열과 함께 많이 사용)

sum=0;

for(let i=0; i<10; i++){
  sum +=i;
}

<while문을 사용하는 경우>
무한루프나 특정 조건에 만족할 때까지 반복해야 하는 경우(주로 파일을 읽고 쓰기에 많이 사용)

sum=0;

i=1;
while(i<=10){
  sum +=i;
  i++
}

Break & Continue(for, while둘다 OK)

반복문 내부에서만 사용할 수 있는 키워드로 Break/Continue가 있다
1.Break
끝까지 for/while 구문을 진행할 필요 없이 중간에서 반복문을 벗어나고 싶을때 사용하는 키워드. 보통 무한 반복문을 만들고, 내부의 반복을 벗어날때 많이 사용.

number = 0


while number <= 10:
    if number == 9:
        break
    elif number <= 5:
        number += 1
        continue            
    else:
        print(number)
        number += 1
> 6
7
8

2.Continue
만일 break처럼 for/while 구문에서 완전히 빠져 나오고 싶지는 않지만 다음 요소, 즉 다음 interation으로 넘어가고 싶을 때 continue 문을 사용
현재 반복을 생략하고, 다음 반복으로 넘어갈 때 사용하는 키워드.

#변수를 선언
numbers = [5, 15, 6, 20, 7, 25]

#반복을 돌린다 
for number in numbers:
	#number 10보다 작으면 다음 반복으로 넘어갑니다.
    if number < 10:
    	continue
    #출력한다
    print(number)
    
>>> 15
	20
    25

파이썬 리스트에서 중복된 값을 제거 하고 싶으면 어떻게 해야 할까?

여기에는 크게 두가지 방법이 있다.
1. set(집합)자료형을 이용
중복을 허용하지 않는 set()을 이용하여 중복을 제거할 수 있다.

my_list = ['A', 'B', 'C', 'D', 'B', 'D', 'E']
my_set = set(my_list) #집합set으로 변환
my_list = list(my_set) #list로 변환
print(new_list)
>>> ['D', 'B', 'A', 'E', 'C']

set()로 제거시 순서가 뒤죽박죽 된다는 단점이 있다.

  1. for문을 이용해 리스트 요소를 순회하며 중복 여부를 체크한다.
    my_list의 모든 요소를 순회하며 해당 요소가 new_list에 있는지 확인한 다음 해당 요소가 존재하지 않으면 new_list에 추가한다. 반복문과 조건문을 이용한 방법으로 순서가 유지된다.
my_list = ['A', 'B', 'C', 'D', 'B', 'D', 'E']
new_list = []
for v in my_list:
    if v not in new_list:
        new_list.append(v)
print(new_list)
출력된 값 ['A', 'B', 'C', 'D', 'E']

2번의 경우 엄청엄청 잘 쓰이는 개념이라 꼭 이해하고 외워두는게 좋다!!

심화개념

1.Iterate with Python For Loops

반복문을 통해서 여러번 코드 수행을 할 수 있는데 대표적으로 range를 사용한 방법이 있다

 For 숫자변수 in range(start_value, end_value, step)

range의 경우 시작조건, 종료조건(list처럼 마지막 값은 포함이 안됨), 스텝(생략 가능)을 쓸 수 있다. range()의 매개변수는 반드시 정수를 입력해야함(입력안할시 TypeError발생)

2.Count Backwards With a For Loop

큰 숫자에서 작은숫자로 반복문을 적용해야 하는 경우가 생기는데 이러한 반복문을 “역반복문”이라고 부름
2-1.range()함수의 매개변수를 세 개 사용

our_list = [] 
	for i in range(10, 0, -2): 
		our_list.append(i) 

our_list 의 결과 => [10,8,6,4,2]

2-2. Reversed() 함수를 사용하는 방법 ->주의사항이 많으므로 쪼랩은 막쓰면 안될듯

For I in reversed(range(5)):
	print(“현재 반복변수: {}.format(i))

결과는 4,3,2,1,0순으로 나온다!

profile
🌱Backend Developer👩‍💻

0개의 댓글