#1. for, in - 문장의 단어를 하나씩 가져오기

 

1
2
3
fruits = ["apple" , "orange""pear"]
for fruit in fruits:
    print(fruit + "는 맛있어")
cs

 

 *CODE DESCRIPTION:

line 1.리스트를 만들 때는 위에서 보는 것과 같이 대괄호([ ])로 감싸 주고 각 요소값들은 쉼표(,)로 구분해 준다.

(리스트명 = [요소1, 요소2, 요소3, ...]) 위는 문자열 리스트이다.

 

line2.

for 변수 in 리스트(또는 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...

fruits의 첫 번째 원소인 apple이 fruit에 대입되고 print(fruit + "는 맛있어") 문장을 수행한다. 첫 번째 원소에 대한 함수가 끝났으므로 차례대로 두 번째 원소, 세번째 원소를 각각 fruit에 대입하고 함수 안의 문장을 수행하게 된다.

 

 

 

두 번째로는 range()라는 함수를 이용한 숫자 list라고 생각하면 쉽다. argument로 숫자가 들어가면 그 수보다 하나 작은 값까지 범위를 갖게된다. 코드로 살펴보자.

 

1
2
for i in range(10):
    print(i)
cs

 

 

range(10)은 [0,1,2,...,9] 의 숫자 리스트를 의미하며 위의 for, in의 흐름과 똑같이 각 수가 i에 대입되어 함수의 문장을 수행하게 된다.

 

 

 

 

그렇다면 이번엔 위의 두 개념을 모두 이용하여 문자열 리스트와 수를 매칭하여 출력해보자.

 

1
2
3
fruits = ["apple""orange""pear"]
for i in range(len(fruits)):
    print("과일" + str(i+1+ ": " + fruits[i])
cs

 

 

*CODE DESCRIPTION:

line2. range의 parameter type과 의미에 맞는 len()함수 사용. len() - 리스트의 개수 반환

line3. str로 <int to string> Type conversion, []를 이용한 list indexing. C++의 array indexing과 같음

 

 

 

Exercise

1
2
3
4
5
6
7
8
9
10
11
# 트럼프 대통령의 1월 1~3일 트윗을 각각 리스트의 원소로 저장합니다.
trump_tweets = [
    'Will be leaving Florida for Washington (D.C.) today at 4:00 P.M. Much work to be done, but it will be a great New Year!',
    'Companies are giving big bonuses to their workers because of the Tax Cut Bill. Really great!',
    'MAKE AMERICA GREAT AGAIN!'
]
 
 
# index에 0~2을 차례대로 저장하여 반복문을 실행합니다.
for index in range(len(trump_tweets)):
    print('2018년 1월 ' + str(index+1+ '일: ' + trump_tweets[index])
cs

 

 

 

 

 

 

 

 

#2. indexing - 단어의 일부분 가져오기(slicing)

먼저 리스트 인덱싱에 대해 살펴보자.

 

 

1
2
3
4
5
fruits = ["apple""banana""kiwi""pear"]
last_fruit = fruits[-1]
tropical_fruit = fruits[1:3]
no_apple = fruits[1:]
no_pear = fruits[:3]
cs

 

 

*CODE DESCRIPTION:

line2: C++과 다르게 인덱싱은 range(len(list))에서 -N ~ (N-1) 까지 가능하다. 만약 [-5]나 [4] 등을 인덱싱하면 list index out of range 에러를 내뱉는다.

 

lin3~5: 리스트 슬라이싱이 가능하다. [1:3] 은 1번째 원소부터 2번째 원소까지 리스트를 의미하며, [1:]은 첫 번째부터 마지막 원소, [:3]은 첫 번째 원소부터 2번째 원소까지 포함하는 리스트를 의미한다.

 

 

다음은 문자열 인덱싱을 살펴보자.

 

1
2
3
4
5
word = "superman"
print(word[3])      # 'e'
print(word[-1])     # 'n'
print(word[5:])     # "man"
print(word[:5])     # "super"
cs

 

 

 

Exercise

1
2
3
4
5
6
7
8
9
10
11
12
13
def print_korea(text):
    '''
    문자열로 구성된 리스트에서 k로 시작하는 문자열을 출력합니다.
    '''
 
    # 아래 print_korea() 함수를 완성하세요.
    for word in text:
        if(word[0== 'k'):
            print(word)
 
 
# 함수를 완성한 후 아래 코드의 주석을 해제하고 결과를 확인해보세요.
print_korea(trump_tweets)
cs

 

 

*CODE DESCRIPTION:

line1. argument로 문자열 리스트를 받는 함수를 정의한다.

 

line7. 각 원소를 word에 대입시켜 안의 문장을 수행하게 된다. 위에서 문자열 인덱싱에서도 살펴 보았듯이 각 word의 첫번째 문자를 참조하는 방법은 word[0] 이고 문자'k'와 논리 연산(==)을 수행하여 true이면 안의 if 문 안의 문장을 수행하게 된다.

 

line13. 정의한 함수를 실행한다.

 

 

 

 

위의 line7~9를 다음과 같이 바꿀 수도 있다.

1
2
3
    for i in range(len(text)):
        if(text[i][0== 'k'):
            print(text[i])
cs

 

line2 에서 C++의 array of array(multidimentional array) 개념으로 생각하면 이해하기 쉽다.