Working with Lists / 리스트 사용하기

4.1 Looping Through Lists / 리스트 반복하기

  • Use for and in to loop through a list.
    리스트를 반복하기 위해 forin을 사용합니다.
# 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(), and sum() 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 스타일 가이드를 염두에 두세요.

  1. Indentation: Use 4 spaces per indentation level.
    들여쓰기: 들여쓰기 단위당 4개의 공백을 사용합니다.
  2. Line Length: Limit lines to 79 characters.
    줄 길이: 줄 길이를 79자로 제한합니다.
  3. Blank Lines: Use blank lines to group code into logical paragraphs.
    빈 줄: 빈 줄을 사용하여 코드를 논리적 단락으로 그룹화합니다.