Chapter 4 / 4과
Working with Lists / 리스트 사용하기
4.1 Looping Through Lists / 리스트 반복하기
- Use
for
andin
to loop through a list.
리스트를 반복하기 위해for
와in
을 사용합니다.
# 4.1_list_loops.py
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
- Choose a meaningful name for the list.
리스트에 의미있는 이름을 선택합니다.
# 4.1_list_loops.py
for cat in cats:
print(cat)
for dog in dogs:
print(dog)
for item in items:
print(item)
- Write as many lines of code in the loop as you want.
원하는 만큼 루프에 코드를 작성합니다. - Lines that are indented are part of the loop.
들여쓰기된 줄은 루프의 일부입니다. - Lines that aren’t indented are not part of the loop.
들여쓰기되지 않은 줄은 루프의 일부가 아닙니다.
# 4.2_list_errors.py
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see your next trick, {magician.title()}.\n")
print("Thank you, everyone. That was a great magic show!")
About Indentation / 들여쓰기에 대하여
- Indentation is important in Python.
들여쓰기는 파이썬에서 중요합니다. - Indentation is used to indicate a block of code.
들여쓰기는 코드 블록을 나타내는 데 사용됩니다. - Indentation is usually 4 spaces.
들여쓰기는 일반적으로 4개의 공백입니다. - Indentation is used in loops, conditionals, functions, and classes.
들여쓰기는 루프, 조건문, 함수, 클래스에서 사용됩니다.
Indentation Errors / 들여쓰기 오류
- If you forget to indent, or indent too much, you may get a syntax error.
들여쓰기를 잊거나 너무 많이 들여쓰면 구문 오류가 발생할 수 있습니다.
# 4.2_list_errors.py
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician) # IndentationError: expected an indented block
message = "Hello Python world!"
print(message) # IndentationError: unexpected indent
- If you indent after the loop is finished, you may get a unexpected output. This is a logic error.
루프가 끝난 후 들여쓰기하면 예상치 못한 출력이 발생할 수 있습니다. 이것은 논리 오류입니다.
# 4.2_list_errors.py
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see your next trick, {magician.title()}.\n")
print("Thank you, everyone. That was a great magic show!")
# Alice, that was a great trick!
# I can't wait to see your next trick, Alice.
#
# Thank you, everyone. That was a great magic show!
# David, that was a great trick!
# I can't wait to see your next trick, David.
#
# Thank you, everyone. That was a great magic show!
# Carolina, that was a great trick!
# I can't wait to see your next trick, Carolina.
#
# Thank you, everyone. That was a great magic show!
Forgetting the Colon / 콜론을 잊어버리다
- If you forget the colon, you may get a syntax error.
콜론을 잊어버리면 구문 오류가 발생할 수 있습니다.
# 4.2_list_errors.py
magicians = ['alice', 'david', 'carolina']
for magician in magicians # SyntaxError: invalid syntax
print(magician)
4.2 Numerical Lists / 숫자 리스트
- Use the
range()
function to make a numerical list.
range()
함수를 사용하여 숫자 리스트를 만듭니다. - Range starts at 0 by default.
범위는 기본적으로 0에서 시작합니다.
# 4.3_numerical_lists.py
for value in range(5):
print(value)
# 0
# 1
# 2
# 3
# 4
- You can give range a start and stop value.
범위에 시작 및 중지 값을 지정할 수 있습니다. - But the stop value is not included in the list.
그러나 중지 값은 목록에 포함되지 않습니다.
# 4.3_numerical_lists.py
for value in range(1, 5):
print(value)
# 1
# 2
# 3
# 4
range()
also accepts an optional step value.
range()
는 선택적인 단계 값을 허용합니다.
# 4.3_numerical_lists.py
for value in range(2, 11, 2):
print(value)
# 2
# 4
# 6
# 8
# 10
Simple Statistics / 간단한 통계
- You can use
min()
,max()
, andsum()
to get simple statistics from a list.
min()
,max()
,sum()
을 사용하여 리스트에서 간단한 통계를 얻을 수 있습니다.
# 4.3_numerical_lists.py
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(min(digits)) # 0
print(max(digits)) # 9
print(sum(digits)) # 45
List Comprehensions / 리스트 컴프리헨션
- You can use list comprehensions to generate lists in one line of code.
리스트 컴프리헨션을 사용하여 한 줄의 코드로 리스트를 생성할 수 있습니다. - List comprehensions combine the
for
loop with the creation of new elements.
리스트 컴프리헨션은for
루프와 새 요소의 생성을 결합합니다.
# 4.3_numerical_lists.py
squares = [value**2 for value in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4.3 Slicing a List / 리스트 자르기
- You can use slices to work with a specific group of items in a list.
슬라이스를 사용하여 리스트의 특정 그룹의 항목을 처리할 수 있습니다. - Give the index of the first and last elements you want to work with.
작업하려는 첫 번째 및 마지막 요소의 인덱스를 지정합니다. - Python stops one item before the second index.
Python은 두 번째 인덱스 앞의 항목을 중지합니다.
# 4.4_list_slices.py
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3]) # ['charles', 'martina', 'michael']
print(players[1:4]) # ['martina', 'michael', 'florence']
- You can also provide just the first element, or just the last element, or a negative index.
첫 번째 요소, 마지막 요소 또는 음수 인덱스만 제공할 수도 있습니다.
# 4.4_list_slices.py
print(players[:4]) # ['charles', 'martina', 'michael', 'florence']
print(players[2:]) # ['michael', 'florence', 'eli']
print(players[-3:]) # ['michael', 'florence', 'eli']
- You can also include an optional step value.
선택적인 단계 값을 포함할 수도 있습니다.
# 4.4_list_slices.py
print(players[0:5:2]) # ['charles', 'michael', 'eli']
print(players[::2]) # ['charles', 'michael', 'eli']
Looping Through a Slice / 슬라이스 반복
- You can loop through a slice.
슬라이스를 반복할 수 있습니다.
# 4.4_list_slices.py
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
for player in players[:3]:
print(player.title())
# Here are the first three players on my team:
# Charles
# Martina
# Michael
Copying a List / 리스트 복사
- You can copy a list by using a slice.
슬라이스를 사용하여 리스트를 복사할 수 있습니다.
# 4.5_list_copy.py
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print(my_foods) # ['pizza', 'falafel', 'carrot cake']
my_foods.append('cannoli')
friend_foods.append('ice cream')
print(my_foods) # ['pizza', 'falafel', 'carrot cake', 'cannoli']
print(friend_foods) # ['pizza', 'falafel', 'carrot cake', 'ice cream']
Referencing a List is NOT Copying it / 리스트를 참조하는 것은 복사가 아닙니다
- But if you don’t use a slice, you will create a reference to the original list.
그러나 슬라이스를 사용하지 않으면 원래 리스트에 대한 참조가 생성됩니다. - A reference is a variable that refers, or points, to another value, and is not a true copy.
참조는 다른 값에 대한 참조 또는 포인터인 변수이며, 실제 복사본이 아닙니다. - A reference is like a nickname for another value.
참조는 다른 값에 대한 별명과 같습니다.
# 4.5_list_copy.py
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print(my_foods) # ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
print(friend_foods) # ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
4.4 Tuples / 튜플
- Tuples are like lists, but they are immutable, which means they cannot change.
튜플은 리스트와 비슷하지만 변경할 수 없습니다. - Tuples are created with parentheses.
튜플은 괄호로 생성됩니다.
# 4.6_tuples.py
dimensions = (200, 50)
print(dimensions[0]) # 200
print(dimensions[1]) # 50
- You can’t change the value of a tuple.
튜플의 값을 변경할 수 없습니다.
# 4.6_tuples.py
dimensions = (200, 50)
dimensions[0] = 250 # TypeError: 'tuple' object does not support item assignment
- But you can assign a new value to a variable that holds a tuple.
그러나 튜플을 보유하는 변수에 새 값을 할당할 수 있습니다.
# 4.6_tuples.py
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
# Original dimensions:
# 200
# 50
#
# Modified dimensions:
# 400
# 100
4.5 Styling Your Code / 코드 스타일링
Keep the following PEP8 styling guidelines in mind when writing Python code.
Python 코드를 작성할 때 다음 PEP8 스타일 가이드를 염두에 두세요.
- Indentation: Use 4 spaces per indentation level.
들여쓰기: 들여쓰기 단위당 4개의 공백을 사용합니다. - Line Length: Limit lines to 79 characters.
줄 길이: 줄 길이를 79자로 제한합니다. - Blank Lines: Use blank lines to group code into logical paragraphs.
빈 줄: 빈 줄을 사용하여 코드를 논리적 단락으로 그룹화합니다.