오늘은 챕터 4를 들어가보기로 하자. 이번주는 일이 바빠서 일찍 업로드하지 못한 점 양해 바랍니다....^^;; 저번 챕터에서 예상했듯이 먼저 4챕터를 살펴보면 3챕터의 확장인 것 같은 느낌이 든다. list의 활용 방법이나 반복문을 활용한 list 출력 및 몇 가지 method에 대해서 알려주고 있는 것 같다. 그러면 하나씩 알아보도록 하자~

 

  • Looping through an Entire List

 우리가 앞장에서는 list를 출력하는 방법을 미리 배워보았다. 하지만 []안에 있는 형태로 출력되고 요소만 뽑는 것에 대해서 일일히 index를 호출하거나 하나씩 출력하는 방식밖에는 하지 못했다. 하지만 이 챕터에서는 반복문! 즉 우리가 흔히 알고 있는 for, while 등을 이용하여 모든 요소를 출력하는 방법을 배울 것이다. 그러면 반복문 중에서도 for문으로 list 전체 요소를 출력하는 방법을 알아보자. 아래의 예제를 살펴보고 사용 방법을 생각해보자.

 

magicians = ['alice', 'david', 'carolina']		# list 생성
for magicians in magicians:				# for (변수) in (변수의 값):
    print(magicians)					# 들여쓰기로 for문 범위 지정
    
출력
alice
david
carolina

 

 우리가 알고 있는 for문과는 매우 다른 구조를 띄고 있다. 하나씩 살펴보자면 for variable(임의 지정)를 지정한 뒤에 in을 삽입하여 variable에 들어갈 value를 지정하는 것이다. value는 숫자가 될 수도 있고 list가 될 수도 있고 흔히 쓰는 형태로는 range()가 많이 쓰인다.(저번 장에서 내가 알려준 method^^) 그리고 c언어에서는 중괄호{}를 사용하여 시작과 끝을 맺었지만 여기서는 시작은 따음표(:)로 알려주지만 끝은 따로 표시가 되어 있지 않다.

 왜???? 여기는 매우 중요한 부분이기에 빨간색 강조를 하겠다. 파이썬이 따로 괄호가 없는 이유는 파이썬은 들여쓰기를 통해 함수의 범위나 조건의 범위가 정해진다. 즉 들여쓰기가 통일되게 되어있으면 그 범위가 곧 for문의 범위라는 것이다. 아래 예제를 살펴보고 들여쓰기의 차이점을 익히도록 하자!!

 

for num in range(3):
	print(num)		
print('END')			# for문에 해당하지 않음

출력
0
1
2
END

for num in range(3):
	print(num)		
	print('END')			# for문에 해당

출력
0
END
1
END
2
END

 

  • Making Numerical lists

 이번 장에서는 매우 유용한 method가 소개되는데 range()라는 method이다. 저번 장부터 조금씩 언급한 녀석이지만 더 자세하게 사용법을 익혀보도록 하자. 앞에 설명했듯이 range()는 괄호 안에 숫자부터 숫자까지의 값들을 반환하는 method이다. 연속된 값을 반환시킬 수도 있으며 일정한 규칙에 맞게 값을 반환시킬 수도 있다. 아래의 예제를 보고 사용법을 익혀보자.

 

for value in range(1, 5):		# range(n, m) : n부터 m-1까지 반환
	print(value)

결과
1
2
3
4

even_numbers = list(range(2, 11, 2))	# range(n, m, a) : n부터 m-1까지 a의 간격마다 반환
print(even_numbers)

결과
[2, 4, 6, 8, 10]

 

  • Working with Part of a List

 다음은 파이썬에만 있는 기능 중 하나인 slicing에 대해서 배워보자. 말 그대로 list의 일부를 자르는 기능을 가지고 있는데 사용하는 방법이 매우 다양하다. 먼저 아래 예제를 살펴보고 기능에 대해 알아보자.

 

players = ['na', 'da', 'ka', 'ta', 'ma']
print(players[0:3])		# players[n:m] : 인덱스 n부터 m-1까지 반환

결과
['na', da', 'ka']

print(players[:2])		# 앞 숫자 생략은 처음부터 m-1까지 반환

결과
['na', 'da']

print(players[:])		# list의 전체 값 반환

결과
['na', 'da', 'ka', 'ta', 'ma']

 

 다음은 list를 복사하는 방법에 대해 알아보자. 이 부분도 중요하게 공부해야 하는데 그 이유에 대해서는 지금부터 이야기해보도록 하겠다. 먼저 예제를 보고 두 코드의 차이점이 무엇인지 알아보도록 하자.

 

my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]		# 다른 list friend_foods 생성
same_foods = my_foods			# 같은 list same_foods 생성

 

 위 두개의 차이점을 알겠는가?? 하나는 앞에서 배운 slicing을 통해 초기화했고 하나는 list 자체를 초기화로 사용했다. 위 두 코드가 어떻게 다른지 아래 예제를 보고 알아보자.

 

my_foods.append('cannoli')
friend_foods.append('ice cream')

결과
my_foods =  ['pizza', 'falafel', 'carrot cake', 'cannoli']
friend_foods =  ['pizza', 'falafel', 'carrot cake', 'ice cream']

my_foods.append('cannoli')
same_foods.append('ice cream')

결과
my_foods = ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
same_foods = ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

 

 list에 append()를 사용하여 추가했을 때 위에서는 따로따로 추가가 되었지만 아래에서는 같이 추가가 되었다. 왜냐하면 위의 두 list는 각각 다른 list이지만 아래의 두 list는 이름만 다를 뿐 같은 list이기 때문이다. 쉽게 말하자면 위의 두 친구는 서로 옆집에 산 반면에 아래 두 친구는 한집살이를 하고 있는 것이다!!! 이러한 결과를 알기 좋은 실험이 있는데 바로 '=='과 'is'를 사용해보는 것이다. 아래 예제에 사용법을 적어놓도록 하겠으니 심심하면 해보도록 하자~

 

my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]		# 다른 list friend_foods 생성
same_foods = my_foods			# 같은 list same_foods 생성

print(my_foods == friend_foods)		# '=='은 두 비교 항목이 일치만 하면 True 반환
결과 : True

print(my_foods is friend_foods)		# 'is'는 두 비교 항목이 본질?이 같으면 True 반환
결과 : False 

 

  • Tuple

 드디어 수많은 type 중 하나인 Tuple에 대해서 소개하고 있다. Tuple의 사용법은 list와 비슷해보이지만 분명히 다른 점이 있다. 먼저 list는 대괄호[]를 쓰는 반면에 tuple은 소괄호()를 사용하고 있다. 그리고 제일 중요한 점은 tuple은 처음 초기화 값을 넣고 그 다음에 변경이 불가능하다는 점이다. 값이 불변한다는 큰 단점이자 장점을 가지고 있다. 그 외에는 list와 동일하게 사용 할 수 있으니 아래 예제에서 tuple의 사용법을 알아보자.

 

dimensions = (200, 50)		# Tuple dimensions 생성
print(dimensions[0])
print(dimensions[1])

출력
200
50

dimensions[0] = 100		# 값을 변경하지 못하기 때문에 TypeError
dimensions = (100, 100)		# 새로운 초기화 가능

 

 tuple을 끝으로 list에 대한 장이 끝이 났다. 그 뒤에는 Styling Your Code가 있는데 한 번 읽어보자^^(절대 귀찮은 건 아님) 이렇게 두 장에 걸쳐서 list에 대한 간략한 이해가 끝났고 다음 장에서는 if문에 대해서 나오는 같으니까 한 번 또 제대로 배워서 나중에 활용할 수 있게 연습해보자~ 이번주는 많이 바빠서 금요일부터 작업에 들어갔으니 양해 바랍니다...ㅠㅠ

'Python > No Starch Press_Python' 카테고리의 다른 글

Chapter7. USER INPUT AND WHILE LOOPS  (0) 2020.04.20
Chapter6. DICTIONARIES  (0) 2020.04.17
Chapter5. IF STATEMENTS  (0) 2020.04.10
Chapter3. Introducing Lists  (0) 2020.03.23
Chapter2. Variables and simple data types  (2) 2020.03.12
블로그 이미지

Mr.HB

프로그래밍 이야기

,