[Python] List와 Tuple, Set과 Dictionary 비교

이태권 (Taekwon Lee)·2022년 5월 29일
0

[Python]

목록 보기
3/5

📝 들어가기 전에

배열과 다르면서도 비슷한 형태의 다양한 컨테이너가 존재한다.

파이썬은 C언어나 자바스크립트처럼 배열이라는 개념이 존재하지 않는다.
다만,list tuple과 같은 자료형을 통해 배열을 사용할 수 있다.




개념

List

배열과 가장 가까운 형태의 컨테이너이며, 사실상 모든 자료형이 들어갈 수 있다.
index로 표현하며, 사용 범위가 넘어갈 경우 error가 난다.

my_list = [1, ‘lee’, [3, ‘taekwon’]]

다차원 배열로 접근 가능하다

my_list[2][0] -> 3

slicing을 통해 원본을 훼손하지 않은 채 변형하여 가져올 수 있다.

my_list = [1, ‘lee’, [3, 'taekwon', [5]], True, 'kang']

print(my_list[0:4:2])
# 마지막 값 2는 step
# step? 몇 칸 뛰어 갖고 올 거냐?
[1, [3, 'taekwon', [5]]]

step

  • step은 잘 쓰이지 않으며 생략 시 1이 기본이다
  • 많이 쓸 경우 [:] 형태로 쓰인다
  • my_list의 처음부터 끝까지라는 뜻이다.
my_list = [1, ‘lee’, [3, 'taekwon', [5]], True, 'kang']
print(my_list[::-1]) -> 맨 뒤에서부터 맨 앞까지 가져 온다
['kang', True, [3, 'taekwon', [5]], 'lee', 1]

Tuple

  • tuple 은 list와 비슷하게 요소들을 저장할 때 쓰인다.
  • 기본적으로 tuple의 접근법은 list와 동일하나, 차이점이 존재한다
  • List 는 수정이 가능하지만 tuple 은 한번 선언되면 수정이 불가능하다.
my_tuple = (3, 5, 9)

보시다시피 list와 차이점은 []()를 사용한다.
Tuple 의 요소들을 읽어들이는 방법과 slicing 방법은 모두 list 와 동일하다.

my_tuple[0]
my_tuple[1:2]

용도

일반적으로 2~5개의 요소를 저장할 때 사용되며, 특정 데이터를 즉석으로 표현하고 싶을 때, 즉, 수정이 필요 없는 간단한 형태의 데이터에 사용된다.

coords = [ (4,4),  (5,2),  (-2, 2),  (-3, -4) ]

Set

list처럼 다양한 자료형의 요소들을 저장할 수 있다.
하지만, 차이점이 존재한다.
1. 요소들이 순서대로 저장되어 있지 않다(not iterable) -> for 문에서 출력하면 무작위로 나온다
2. 인덱싱도 없어, 몇 번째 요소를 읽어들일 수 없다.
3. 중복된 값을 저장할 수 없으며, 시도할 경우 새로운 요소가 이전 요소를 대체한다.

set1 = {1, 2, 3}

교집합(intersection 또는 & )이나 합집합(union 또는 |), 차집합(difference 또는 - 사용)를 구할 때 활용이 가능하다

Dictionary

말 그대로 사전처럼 단어와 뜻의 형태를 갖고 있다.
파이썬의 dictionary는 keyvalue를 갖는다.

my_dict = { "key1" : "value1", "key2" : "value2"}

list와는 다르게 요소를 수정하고 삭제할 때 index가 아닌 key를 사용한다.

my_dict = { "one": 1, 2: "two", 3 : "three" }
my_dict["four"] = 4 	# 요소 수정
del my_dict["one"]		# 요소 삭제
print(my_dict)
> {2: 'two', 3: 'three'}

keylistdictionary는 재할당 되어 변경될 수 있으므로 들어갈 수 없다



공통점과 차이점

List와 Tuple

  • 공통점
  1. 자료형의 종류에 상관 없이 값으로 저장할 수 있다.
  2. 중복된 값을 넣을 수 있다.
  3. 다차원으로 만들 수 있다.
  4. 순서가 있으며 인덱스를 통해 특정 요소에 접근할 수 있다.
  5. dict와 다르게 모두 key와 value를 갖지 않고 값으로만 저장한다.
  • 차이점
  1. 표현할 때 사용하는 기호가 다르다 (list는 [], tuple은 ())
  2. list는 요소를 삭제하거나 변경할 수 있지만, tuple는 불가하다(mutable vs immutable)
  3. list는 tuple보다 더 많은 기능과 flexibility를 제공하여, 용량이 크다

Set과 Dictionary

  • 공통점
  1. 중복이 불가하다
  2. 순서가 없다
  3. {}를 사용해 표현한다.
  • 차이점
  1. set은 key만 있으나, dictionary는 key와 value 모두 있다.
  2. set은 list의 중복 값을 삭제하는 데에 쓰이며, dictionary는 키워드로 값을 찾기 위해 사용한다.



🔖 참고 자료

profile
(Backend Dev.) One step at a time

0개의 댓글