Run The Bridge

3부 리스트 다루기 & 튜플(tuple) 본문

Python/나의 첫 파이썬

3부 리스트 다루기 & 튜플(tuple)

anfrhrl5555 2021. 9. 15. 17:51
728x90
반응형

0. 들어가기에 앞서

이제 본격적으로 리스트와 루프를 사용한다. 이 책은 입문자를 위한 책이 아니므로 꼭! 입문용 책을 보고 복습용으로 봤으면 좋을 것이다


 

1. 전체 리스트에 대해 루프 실행하기

아까도 motocycles에 대해 print를 하려고 하면, print문을 3번 써야 하는 불편함이 있다.

 

python에서도 다른 언어와 마찬가지로 반복문이 존재한다.

 

리스트의 모든 항목에 같은 일을 하고 싶을 때는 for 루프를 사용해주자.

migicians = ['alice', 'david', 'carolina']
for migician in migicians:
    print(migician)

다음과 같이 입력하면, migicians에 담긴 리스트가 한 줄씩 출력되는 것을 볼 수 있다.

 

for loop에는 변수명이 2개 들어가는데, 다음과 같이 복수, 단수로 쓰면 이해하기가 쉽다.

for cat in cats:
for dog in dogs:
for item in list_of_items:

 

for 루프부터 루프의 마지막 행까지를 루프 블록(loop block)이라고 합니다.


2. 숫자형 리스트 만들기

숫자 리스트를 저장해야 할 때도 많습니다. 한 예로 데이터 시각화에서는 거의 항상 온도, 거리, 개체 수, 위도와 경도 값 같은 숫자로 작업합니다.

 

간단한 예제로 알아봅시다.

for value in range(1, 5):
    print(value)

다음 출력은 1부터 4까지 차례로 출력해줍니다. 하지만 5는 출력이 되지 않는데요 range() 함수는 끝 값을 출력하지 않습니다. 그래서 1~4까지 출력이 됩니다. 5까지 출력시키고 싶으면 (1, 6)으로 적어주어야 합니다.

 

range로 해당 값까지 표현하고 싶다면 +1을 해주면 됩니다.


3. ragne()로 숫자 리스트 만들기

range을 이용해서 숫자 리스트도 만들 수 있습니다. 다음의 예시를 살펴봅시다

numbers = list(range(1, 6))
print(numbers)

 

1부터 10사이의 짝수만 리스트로 만들고 싶을 때는 다음과 같이 사용합니다.

even_numbers = list(range(2, 11, 2))
print(even_numbers)

range(처음 값, 끝 값, 단위)로 보면 이해가 쉽습니다.

 

2부터 시작하는데 단위는 +2씩 올린다, 입니다.


4. 숫자 리스트를 이용한 단순한 통계

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

print(min(digits))  # 0

print(max(digits))  # 9

print(sum(digits))  # 45

python list는 최대값, 최솟값, 합계를 구하는 함수가 존재합니다.


5. 리스트 내포(list comprehension)

squares = [value ** 2 for value in range(1, 11)]
print(squares)

리스트 컴프리헨션은 for 루프와 새 항목 생성을 한 행에 결합하여 각 새 항목을 자동으로 리스트에 추가합니다.

리스트 컴프리헨션은 좀 어려운 개념이라 잘 설명하지 않지만, 자주 쓰는 사항이라 알아두면 좋습니다.

 

개인적으로 리스트 컴프리헨션을 쓰면 append나 insert 같은 삽입, 추가 문을 쓰지 않고 바로 변수에 담을 수 있어서 매우 유용하다고 생각합니다.


6. 리스트 자르기(list slicing)

player = ['charles', 'matina', 'michael', 'florence', 'eli']
print(player[0:3])

player[0:3]은 player [0], player [1], player [2]를 의미합니다. range랑 똑같다고 보시면 됩니다.

 

만약 0번째 인덱스부터 특정 인덱스까지 보고 싶다면 다음과 같이 사용하면 됩니다.

print(players[:4]

 

마찬가지로 특정 인덱스부터 마지막 인덱스까지 보고싶다면?

print(players[0:]

반대로 사용해주면 됩니다.


7. 리스트 복사하기

기존 리스트를 변형해 다른 새 리스트를 만들어야 할 대도 있습니다.

 

이번에는 리스트 복사에 대해 알아봅시다.

my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]

print("My favorite foods are: ")
print(my_foods)

print("My friend's favorite foods are: ")
print(friend_foods)

이제 friend_foods에 append, insert를 써도 my_foods에는 영향을 주지 않고 개별로 동작하는 것을 알 수 있습니다.


8. 튜플

항목을 바꿀 수 없는 리스트가 필요할 때 사용하는 것이 바로 튜플입니다.

파이썬은 바꿀 수 없는 값을 불변적(immutable)이라 하며  바뀌지 않는 리스트를 튜플(tuple)이라 부릅니다.

 

다음과 같이 항상 크기가 일정해야 하는 값이 존재한다면, 튜플로 선언하여 항상 크기를 고정할 수 있습니다.

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

 

dimensions [0]의 값을 수정하면 다음과 같습니다.

dimensions = (200, 50)

dimensions[0] = 250

 

튜플을 정의하는 것은 ', '(콤마)로 볼 수 있습니다.

튜플 주위의 괄호는 가독성을 높이기 위한 장치일 뿐, 항목이 단 하나만 들어 있는 튜플을 정의한다 하더라도 끝에 콤마를 붙여주어야 합니다.

my_t = (3, )

9. 코드 스타일(code style)

이제 프로그램을 좀 더 길게 만들 수 있으니 어떤 스타일로 코딩할지를 생각해야 합니다.

코드를 읽기 쉽게 쓰다 보면 자신의 프로그램이 무슨 일을 하는지 추적하기 쉬워져서 다른 사람이 여러분의 코드를 쉽게 이해할 수 있습니다. 이 과정은 협업할 때 매우 중요합니다.

파이썬 프로그래머들은 읽기 쉽게 몇 가지 코드 스타일에 합의했습니다. 다음의 약속을 잘 지켜봅시다!

 

1. 들여 쓰기

PEP 8은 들여 쓰기로 공백 네 칸을 권합니다. 주의사항으로는 탭과 공백이 섞여 있으면 혼란을 일으키므로, 에디터에서 탭 대신 공백을 삽입하도록 설정했는지 확인해야 합니다.

 

2. 행 길이

각 행을 80자 미만으로 쓰길 권합니다.(이 지침이 만들어진 건 대부분의 컴퓨터가 터미널 창의 한 행에 79자만 표시할 수 있었기 때문입니다) 현재는 한 행이 훨씬 길어도 화면에 다 표시되지만, 79자를 표준 행 길이로 권하는 이유는 종종 여러 파일을 같은 화면에 열어놓고 작업할 때, 표준 행 길이를 지키면 파일 두 개나 세 개를 나란히 열어 모두 볼 수 있습니다.

또한 주석 한 행을 72자로 제한하기도 합니다.

3. 빈 행

빈 행을 서서 프로그램의 각 부분을 시각적으로 구분해야 합니다. 이 책을 진행하다 보면 적당한 균형을 찾을 수 있습니다.

 

4. 다른 스타일 지침

https://www.python.org/dev/peps/pep-0008/

 

PEP 8 -- Style Guide for Python Code

The official home of the Python Programming Language

www.python.org

위의 사이트에서 PEP 8 지침에 대해 알 수 있습니다.

 

다음 시간에는 if문을 배워보도록 하겠습니다.

728x90
반응형

'Python > 나의 첫 파이썬' 카테고리의 다른 글

5부 딕셔너리(dict)  (0) 2021.09.21
4부 if문  (0) 2021.09.15
2부 리스트(list)  (0) 2021.09.15
1부 기초  (2) 2021.09.09
Comments