자료형 2. 리스트와 튜플

변현섭·2023년 7월 26일
0

3. 리스트 자료형

1) 리스트 생성하기

리스트를 만들 때에는 쉼표로 요소를 구분하고 대괄호로 감싸면 된다.

리스트명 = [요소1, 요소2, 요소3, ...]

리스트의 요소에는 어떠한 자료형이라도 포함할 수 있다.

>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'is']
>>> e = [1, 2, ['Life', 'is']]

2) 리스트의 인덱싱과 슬라이싱

리스트의 인덱싱은 C/C++, Java에서의 방식과 크게 다르지 않다. 다만, 파이썬에서는 뒤에서 부터 세는 -를 이용한 인덱싱이 가능하다. 또한 슬라이싱 역시 문자열에서와 동일하게 동작한다.

파이썬의 인덱싱과 슬라이싱이 갖는 강력한 점은 중첩 리스트에서 나타난다. 아래의 이중, 삼중 중첩 리스트를 보자.

>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[-1][0]
'a'
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'

C/C++이었다면 이차원, 삼차원 배열을 도입했어야 하겠지만, 파이썬에서는 매우 간결하고 직관적으로 중첩 리스트를 나타낼 수 있다. 또한 인덱싱 연산으로 값을 가져오는 과정도 매우 단순하다.

3) 리스트 연산

리스트 연산은 문자열 연산과 동일한 방식으로 이루어진다.

① 두 개의 리스트 병합

  • Java에서는 리스트의 닷 오퍼레이터로 addALL이라는 메서드를 호출하는 방식으로 리스트를 병합한다.
  • 파이썬에선 이보다 훨씬 간결하고 직관적인 방법을 제공한다.
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]

② 리스트 반복

  • 사실 리스트를 반복할 일은 많지 않지만, 반복할 일일 생긴다면 무척 편리할 것 같다.
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

③ 리스트 길이

  • len 함수를 이용한다.
  • 리스트 연산에 있어 가장 자주 사용된다.
>>> a = [1, 2, 3]
>>> len(a)
3

4) 리스트의 수정과 삭제

① 리스트의 값 수정하기

>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]

② 리스트의 값 삭제하기

  • delete에 인덱스를 전달할 수도 있고 슬라이스를 전달할 수도 있다.
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
>>> b = [1, 2, 3, 4, 5]
>>> del b[2:]
>>> b
[1, 2]

5) 리스트 관련 함수

① append

  • 리스트에 요소를 추가
  • C++에서의 push_back, Java에서의 add와 같은 기능
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]

② sort

  • 리스트를 정렬
>>> a = ['a', 'c', 'b']
>>> a.sort()
>>> a
['a', 'b', 'c']

③ reverse

  • 리스트를 거꾸로 뒤집음
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']

④ insert

  • 요소를 중간에 삽입
>>> a = [1, 2, 3]
>>> a.insert(1, 4)
>>> a
[1, 4, 2, 3]

⑤ remove

  • delete와 달리 인덱스가 아닌 값을 받아 삭제를 처리
  • 단, 첫번째로 나오는 값만 삭제
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]

⑥ pop

  • 해당 인덱스의 요소를 리턴하고 리스트에서 삭제
  • C++ STL Stack에서의 pop은 LIFO 방식으로 값을 반환하는 반면, 파이썬의 pop은 인덱스를 기준으로 값을 반환한다.
>>> a = [1, 2, 3]
>>> a.pop(1)
2
>>> a
[1, 3]

⑦ count

  • 리스트 안에 존재하는 해당 요소의 개수를 반환
>>> a = [1, 2, 3, 1]
>>> a.count(1)
2

4. 튜플 자료형

1) 튜플 생성하기

튜플은 리스트와 매우 비슷하다. 리스트와 다른 점은 아래의 두 가지이다.

① ()로 둘러싼다.

  • 1개의 요소만 가질 때에도 쉼표 필요
  • 소괄호 생략 가능
t1 = ()
t2 = (1,)
t3 = (1, 2, 3)
t4 = 1, 2, 3
t5 = ('a', 'b', ('ab', 'cd'))

② 요소 변경 불가

  • 프로그램이 실행되는 동안 요소의 값이 변하지 않기를 기대하는 경우에 적합
  • 요소 값이 가변적인 경우에는 리스트가 더 적합
  • 사실 요소의 값이 가변적인 경우가 훨씬 많기 때문에, 튜플보다는 리스트를 압도적으로 많이 사용

2) 튜플 연산

위에서 설명한 바와 같이 리스트에서의 연산과 동일한 방식이 튜플 연산에도 적용된다.

① 인덱싱

>>> t1 = (1, 2, 'a', 'b')
>>> t1[0]
1

② 슬라이싱

>>> t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')

③ 튜틀 병합

>>> t1 = (1, 2, 'a', 'b')
>>> t2 = (3, 4)
>>> t3 = t1 + t2
>>> t3
(1, 2, 'a', 'b', 3, 4)

④ 튜플 반복

>>> t2 = (3, 4)
>>> t3 = t2 * 3
>>> t3
(3, 4, 3, 4, 3, 4)

⑤ 튜플 길이

>>> t1 = (1, 2, 'a', 'b')
>>> len(t1)
4
profile
Java Spring, Android Kotlin, Node.js, ML/DL 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.

0개의 댓글