Lists and Tuples

The difference betwen Lists and Tuples in Python

강의 홍보

I. 개요

  • 이번 시간부터 본격적으로 파이썬의 기초 자료형에 대해 간단한 튜토리얼을 준비했다.
  • 데이터 분석과는 큰 관계가 없을 수 있지만, 데이터 정제 할 때, 도움이 되기도 한다.
  • 그 중에서 면접의 단골질문과 같은 Lists & Tuple에 대해 나누는 시간을 가졌다.

II. Lists

  • 먼저 Lists[] 형태로 정의가 된다.
alphabet = ['A', 'B', 'C', 'D']
print(alphabet)
['A', 'B', 'C', 'D']
  • 코드는 간단하다. 그러나 함의하고 있는 내용은 다음과 같다.
    • List는 정렬(ordered)되었다.
    • List는 다양한 형태의 데이터 유형을 담을 수 있다.
    • List안에 있는 값은 인덱스로 접근한다.
    • List안에 또다른 List를 담을 수 있다.
    • List는 변하기 쉽다.
    • List는 동적이다.

(1) List는 정렬(ordered)되었다.

  • 우선 코드로 확인하자.
a1 = [1, 2, 3, 4]
a2 = [2, 3, 4, 1]

a1 == a2
False
a1 is a2
False
[1, 2, 3, 4] == [2, 3, 4, 1]
False
  • 일련의 코드는 a1a2가 같지 않다는 것을 프로그래밍적으로 증명한 것이다.
    • 좀 더 쉽게 표현하면 List안에 있는 값은 순서가 있다는 뜻이다.

(2) List는 다양한 형태의 데이터 유형을 담을 수 있다.

  • List의 편리성이기도 하지만, 분석시에는 데이터프레임으로 변환할 때 큰 애로사항이 되기도 한다.
  • 우선, 코드로 확인해보자.
multi_values = [11.1, 'foo', 3, 5, 'bar', True, False, 3.1245]
print(multi_values)
[11.1, 'foo', 3, 5, 'bar', True, False, 3.1245]
  • 또한, List는 다양한 함수, class, 심지어는 모듈도 담을 수 있다.
float
float
len
<function len>
def temp():
  pass
temp
<function __main__.temp>
import math
math
<module 'math' (built-in)>
multi_objects = [float, len, temp, math]
multi_objects
[float, <function len>, <function __main__.temp>, <module 'math' (built-in)>]

(3) List안에 있는 값은 인덱스로 접근한다.

  • 다음 그림이 인덱스로 접근하는 기본적인 방법이다.
    • 참고로 또다른 분석 언어인 R0이 아닌 1부터 시작한다.
  • 소스코드로 빠르게 확인해보자.
temp = ["A", "B", "C", "D", "E"]
temp[0]
'A'
temp[1]
'B'
temp[4]
'E'
  • 그런데, Negative List 형태로도 접근할 수 있다.
    • -1, -2와 같은 형태로 접근하는 것이다.
  • 코드를 통해 확인해보자.
temp[-1]
'E'
temp[-4]
'B'
temp[-5]
'A'
  • 슬라이싱을 활용한 인덱스 접근법도 있다.
    • temp[m:n] 형태로 From M to N으로 접근한다.
  • 코드를 통해서 확인해보자.
temp[0:5]
['A', 'B', 'C', 'D', 'E']
temp[2:4]
['C', 'D']
temp[-5:-1]
['A', 'B', 'C', 'D']
temp[-5:]
['A', 'B', 'C', 'D', 'E']
  • 이 외에도, 슬라이싱 기법을 활용한 다양한 접근법이 있다. 스택오버플로우의 문서를 확인해보면 보다 더 많은 정보를 얻을 수 있다.

(4) List안에 또다른 List를 담을 수 있다.

  • List안에 다양한 객체가 들어가 있음을 확인했다.
  • 그런데, List안에 또 다른 List가 들어갈 수도 있다.