4월 국비교육을 시작으로 12월 해커톤 경진대회를 마친 시점에서
뭔가 열심히 하긴 했지만 정리 돼있다는 느낌을 받지 못했다.
입사 전 약 2주 동안
배운 내용들, 부족한 부분, 기초적인 개념 등을 추가하며 학습을 진행해보겠습니다~!
참고도서는 다음과 같습니다.
파이썬 자료구조는 단순하지만 강력!! 자료구조를 잘 다루는 것이 파이썬 고수의 지름길
튜플 (Tuple)
- 1차원의 고정된 크기를 가지는 변경 불가능한 순차 자료형, 쉼표로 구분된 값을 대입하여 생성한다.
tup = 4,5,6
tup
(4, 5, 6)
소괄호를 사용해 값을 묶어줌으로써 중첩 튜플을 정의할 수 있다. ex) 튜플 안의 튜플
nested_tup = (4,5,6),(7,8)
nested_tup
((4, 5, 6), (7, 8))
모든 순차 자료형이나 이터레이터는 tuple method를 호출해 튜플로 변환할 수 있다.
tuple([4,0,2]) # 리스트 형태를 튜플로 변환
(4, 0, 2)
tup = tuple('string') #문자열도 변환가능
tup
('s', 't', 'r', 'i', 'n', 'g')
튜플의 각 원소는 대괄호 []를 이용해서 다른 순차 자료형처럼 접근할 수 있다. C,C++,Java 등 다른 언어들과 마찬가지로 순차자료형의 index는 0부터 시작
tup[0]
's'
튜플에 저장된 객체 자체는 변경이 가능하지만 한 번 생성되면 각 슬롯에 저장된 객체를 변경할 수 없다.
tup=tuple(['foo',[1,2],True])
tup[2]=False
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-914f49ef33f9> in <module>()
1 tup=tuple(['foo',[1,2],True])
----> 2 tup[2]=False
TypeError: 'tuple' object does not support item assignment
튜플 내에 저장된 객체는 그 위치에서 바로 변경이 가능하다.
tup[1].append(3) # 1번째의 리스트에 3을 추가
tup
('foo', [1, 2, 3], True)
+ 연산자를 이용하여 튜플을 이어붙일 수 있다.
(4, None, 'foo') + (6,0) + ('bar',)
(4, None, 'foo', 6, 0, 'bar')
만일 튜플과 같은 표현의 변수에 튜플을 대입하면 파이썬은 등호 오른쪽에 있는 변수에서 값을 분리한다.
tup = (4,5,6)
a,b,c = tup
b
5
중첩된 튜플을 포함하는 순차 자료형에서도 값을 분리해낼 수 있다.
tup = 4,5,(6,7)
a,b,(c,d) = tup # 형태가 맞지 않을 경우 에러 발생
d
7
이 기능을 사용하면 변수의 이름을 바꿀 때 다른 언어에서는 아래처럼 처리하는 것을 쉽게 해결할 수 있다.
tmp = a
a = b
b = tmp
파이썬에서는 다음과 같이 하여 두 변수의 값을 쉽게 바꿀 수 있다.
a,b = 1,2
print(a,b)
1 2
b,a = a,b
print(a,b)
2 1
튜플이나 리스트를 순회할 때도 흔히 이 기능을 활용
seq = [(1,2,3),(4,5,6),(7,8,9)]
for a,b,c in seq:
print('a={0}, b={1}, c={2}'.format(a,b,c))
a=1, b=2, c=3
a=4, b=5, c=6
a=7, b=8, c=9
파이썬은 최근 튜플의 처음 몇몇 값을 끄집어내야하는 상황을 위해 튜플에서 값을 분리하는 진보된 방법을 수용했다.
특수한 문법인 *rest 사용
values = 1,2,3,4,5
a,b,*rest = values
print(a, b, rest)
1 2 [3, 4, 5]
rest는 필요 없는 값을 무시하기 위해 사용하기도 한다. rest라는 이름 자체에는 특별한 의미x
불필요한 변수라는 것을 나타내기 위해 _를 사용하는 관습도 있다.
a,b, *_ = values
a,b
(1, 2)
튜플의 크기와 내용은 변경할 수 없기때문에 인스턴스 메서드가 많지 않다.
유용하게 사용되는 메서드 중 하나는 주어진 값과 같은값이 몇 개 있는지 반환하는 count 메서드이다.(리스트에서도 사용가능)
a = 1,2,2,2,3,4,2
a.count(2)
4
요약
- 튜플은 1차원의 고정된 크기를 가지는 변경 불가능한 순차 자료형
- 쉼표로 구분된 값 대입
- 소괄호로 표현됨
- 튜플 내의 리스트는 변경 가능하지만 위치의 data는 변경 불가
'IT > [Python]' 카테고리의 다른 글
[Python] 구글에서 이미지를 수집 해보자 (selenium) (0) | 2022.02.24 |
---|---|
[Python] 시각화 관련 참고 자료 링크 (0) | 2022.01.24 |
[Python]__name__ 과 '__main__' ?? (0) | 2022.01.06 |
[Python] 이해하면 편리한 map함수 (0) | 2022.01.04 |
[Python] 두 리스트를 비교하고 싶을 때? zip함수 (0) | 2022.01.04 |