파이썬 여름방학 스터디/1. 조건문과 반복문

3-2. 제어문(반복문 for문) (+cf. List Comprehension, 삼항연산자)

꿀복피그 2023. 8. 28. 03:24

안녕하세요~ 여러분!

지난 시간에 이어 오늘 배워볼 것은

바로 반복문이예요!

 

오늘까지 배우면 이제 

코딩에 제압당하지 않고 스스로 제어할 수 있을 거예요 ㅎ.ㅎ

설레지 않나요~?

 

자, 그럼 본격적으로 들어가 봅시다

 

먼저 for문의 기본 구조를 알아볼게요~

```
for 변수 in range(범위):
  반복할 문장
```

여기서 쓰인 range 함수는 범위를 생성하는 함수로 for문과 함께 자주 쓰여요~

range() 함수의 형태는 다음과 같아요

- range() : 범위를 생성하는 함수
  - range(시작인덱스, 종료인덱스(직전), 증감값)

range() 함수는 말 그대로 함수이지, 리스트가 아니예요.

그런데 숫자가 담겨 있는 리스트와 비슷한 기능을 하잖아요? 

그럼 range() 함수가 들어간 자리에 리스트나 튜플, 문자열도 넣을 수 있지 않을까요?

 

자, for문과 list가 함께 쓰이는 상황에 대해 살펴보도록 합시다.

다음 예제를 통해 알아볼게요

li = [10, 20, 30, 40, 50, 60, 70]

for i in li :
  print(i, end = ' ')

리스트를 먼저 생성하고 리스트 속에 있는 변수들을 순서대로 뽑아내는 코드예요~

여기서 end 키워드를 사용해서 enter 없이 한줄로 출력되도록 처리도 해주었어요!

 

다음은 score 리스트에 저장된 점수들 중 60점 이상인 점수가 몇 개인지 출력하는 코드를 작성해볼거예요!

score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
student = 0
for i in score:
  if i >= 60:
    student += 1
print(student)

어때요? 이런 식으로 list와 for문이 함께 사용해서 많은 상황을 구현할 수 있답니다.

 

다음은 다중 반복문인데요,

for문을 여러개 중첩해서 사용할 수도 있어요.

한번 알아볼까요?

for i in range(1,4):
  print(f'현재 i : {i}')
  for j in range(1,4):
    print(f'car 현재 j : {j}')

이렇게 코드를 입력하면 다음과 같이 출력된답니다

현재 i : 1

car 현재 j : 1

car 현재 j : 2

car 현재 j : 3

현재 i : 2

car 현재 j : 1

car 현재 j : 2

car 현재 j : 3

현재 i : 3 

car 현재 j : 1

car 현재 j : 2 

car 현재 j : 3 

 

 

****************************************************************참고**************************************************************

여기서부터는 추가적으로 list comprhension과 삼항연산자에 대해 알아보고 넘어갈거예요!

알아두면 유용하답니다!

먼저 List Comprehension 에 대해 알아보면,

Comprehension이란 iterable(반복가능)한 오브젝트를 생성하기 위한 방법 중 하나로

파이썬에서 사용할 수 있는 유용한 기능을 말해요.

List Comprehension은 리스트를 쉽게 생성하기 위한 방법이구요!

 

백문이 불여일타입니다.조금 낯설더라도 코드를 보고 직접 작성해보면서 익숙해져 보아요~

[0 for i in range(10)]

위 코드대로 입력하면 0이 10개 채워진 리스트가 생성되어요.

[i for i in range(10)]

그리고 위 코드대로 입력하면 1부터 9까지의 숫자들로 채워진 리스트가 생성되구요.

즉, for 앞에 있는 변수로 range 범위 개수만큼 채워진다고 생각하면 간단해요.

약간의 변형을 해보면 다음과 같은 형태도 가능하겠죠?

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,]

# arr 리스트의 각 요소들의 제곱을 요소로 가지는 리스트를 만들고 싶어요.
result = [n*n for n in arr]
print(result)

만일 조건을 걸고 싶다면 range함수 뒤에 바로 이어서 작성해주면 돼요!

# 리스트 컴프리핸션을 이용해서 0 ~ 9까지 양수이면서 짝수만 가지고 나와서 리스트 만들기
result = [n for n in range(10) if n % 2 == 0 and n > 0]
print(result)

자, 이제는 삼항연산자에 대해 이어서 알아볼건데요!

삼항연산자를 통해 연산한 결과는 하나의 값으로 봐요.

먼저 형태는 다음과 같아요.

참일 때 값 if 조건 else 거짓일 때 값

if 뒤의 조건이 참이면, 참일 때 값이 출력되고 거짓이라면 else 뒤의 값으로 출력된답니다~

for문과 함께 사용할 수도 있어요.

 

아래는 for 문과 상항연산자를 함께 사용한 예시예요.

# 삼항연산자 관련
# 양수는 그대로 음수는 0으로 저장하기
arr = [-1, -4, 24, 5, -10, 2]
result = [n if n > 0 else 0 for n in arr]
print(result)

리스트 안의 n을 차례차례 보면서 n이 양수면 n으로 그대로 나오고 아니라면 0으로 출력되는 코드예요.

 

어때요? 

이것도 익숙한 형태는 아니지만 알아두면 유용하게 사용할 수 있으니까 한번 소개해봤어요.

그럼 여러분 복습 열심히 하시고 다음에 봐요!