본문 바로가기
공부/코딩

⛷ [파이썬] 파이썬 기초 정리 (8) : 리스트 _ 5 / 튜플

by blackb1rd 2022. 11. 7.
728x90
반응형
728x170

 

 

 

파이썬 기초 정리

 

 

18) 슬라이스에 루프 실행하기 

리스트의 부분집합에 루프를 실행하려면 슬라이스에 루프를 실행하면 됩니다. 다음 예제를 통해 처음 세 개에 루프를 실행하고 세 개의 이름을 출력하는 것을 확인할 수 있습니다.

 

예제41)

dogs = ['merry', 'martin', 'amy', 'bob', 'eli']

print("Here are the first three dogs on my team")
for dog in dogs[:3]: #1
    print(dog.title())

 

결과 값

Here are the first three dogs on my team
Merry
Martin
Amy

 

#1에서는 전체 리스트 항목에 루프를 실행하지 않고, 처음 3개에만 루프를 실행합니다. 

 

 

 

 

 

 

 

19) 리스트 복사하는 법

예제 42)

my_foods = ['pizza', 'pasta', 'gelato'] #1
friend_foods = my_foods[:] #2

print(my_foods)
print(friend_foods)

 

결과 값

['pizza', 'pasta', 'gelato']
['pizza', 'pasta', 'gelato']

#2의 [ : ]표시는 첫번째 인덱스가 없으면 0번째 부터 시작하며 마찬가지로 마지막 인덱스가 없으면 마지막 항목까지 전부 포함합니다. 

 

 

 

예제43)

my_foods = ['pizza', 'pasta', 'gelato'] 
friend_foods = my_foods[:] #1

my_foods.append('pork') #2
friend_foods.append('chicken') #3

print(my_foods)
print(friend_foods)

 

결과 값

['pizza', 'pasta', 'gelato', 'pork']
['pizza', 'pasta', 'gelato', 'chicken']

 

 

예제44) 

my_foods = ['pizza', 'pasta', 'gelato'] 
friend_foods = my_foods[:]

#이 코드는 원하는 대로 동작하지 않습니다.
friend_foods = my_foods  #1

my_foods.append('pork') 
friend_foods.append('chicken') 

print(my_foods)
print(friend_foods)

 

 

결과 값

['pizza', 'pasta', 'gelato', 'pork', 'chicken']
['pizza', 'pasta', 'gelato', 'pork', 'chicken']

예제44의 #1에서는 슬라이스 없이 두 리스트가 같다고 표현했습니다. 하지만 파이썬에서는 =가 단순히 새 변수(friend_foods)와 리스트(my_foods)를 연결하는 기능만 합니다. 즉, 두 변수는 같은 리스트를 가리킵니다. 그리고 이것은 우리가 원하는 결과를 가져올 수 없습니다. 

 

 

 

튜플 (tuple)

튜플은 항목을 바꿀 수 없는 리스트를 만들 때 사용합니다.

튜플과 일반 리스트의 차이는 튜플의 경우 대괄호[ ] 대신 소괄호 ( )를 쓴다는 점입니다. 

 

예제1) 

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

 

결과 값

200
50

 

예제1의 튜플을 수정하려고 할 때 아래와 같은 오류가 발생합니다. 

dimensions = (200, 50)
dimensions[0] = 250

 

 

 

반응형

 

 

 

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-258c8b06eee2> in <module>
      1 dimensions = (200, 50)
----> 2 dimensions[0] = 250

TypeError: 'tuple' object does not support item assignment

 

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

 

t_one = (3,)

 

 

 

1) 튜플의 모든 값에 루프 실행하는 법

리스트에서 했던 것과 마찬가지로 튜플에서도 for 루프를 써서 모든 값에 루프를 실행할 수 있습니다.

 

예제2)

dimensions = (200, 50)
for dimension in dimensions:
  print(dimension)

 

결과 값

200
50

 

 

 

2) 튜플 덮어쓰는 법

튜플은 수정할 수 없지만 튜플을 가리키던 변수에 새 값을 할당하는 것은 가능합니다.

 

예제3) 

dimensions = (200, 50) #1
print("Original dimensions:")
for dimension in dimensions:
  print(dimension)

dimensions = (400, 100) #2
print("\nModified dimensions:") #3
for dimension in dimensions:
  print(dimension)

 

결과 값

Original dimensions:
200
50

Modified dimensions:
400
100

 

#1에서 시작하는 행은 튜플을 정의하고 처음 크기를 출력합니다. 

#2에서는 dimensions변수에 새 튜플을 연결합니다. 

#3에서는 새 크기를 출력합니다. 

 

변수 값을 새로 할당하는 것은 유효한 방법이므로 이번에는 파이썬이 에러를 일으키지 않습니다. 

 

 

 

 

728x90
반응형
그리드형

댓글