[Python] # 0. 리스트,튜플,딕셔너리 기초개념 정리

Crush_on_Study·2022년 6월 12일
0

Python 기초

목록 보기
1/2

List (리스트)

List가 무엇인가요?

C언어에서 여러 변수들을 하나의 아파트에 담아두는 것을 배열(Array)이라고 하였습니다.

#include <stdio.h>
int main()
{
	int arr[5] = {1,2,3,4,5};
    return 0;
}

파이썬에도 이러한 기능을 하는게 있습니다. 바로 리스트입니다.

  • C언어의 배열과 다른게 있다면, 위 코드는 선언된 배열의 자료형은 정수입니다. 근데 파이썬의 리스트는 하나의 배열에 여러 자료형을 입력하는게 가능합니다.


위 소스코드를 보면 1,2,3은 정수지만 Crush는 문자입니다.

  • 리스트 연산을 통해서 확인해볼까요?

data[0]+data[2]는 1과 3의 합이므로 4가 잘 나옵니다.
data[0]+data[3]은 정수와 문자의 합이므로 TypeError가 뜹니다.


List의 특징과 함수

Ok, 그럼 이 리스트가 가진 특징을 좀 더 알려주세요.

  • 첫 번째 : 리스트는 대괄호를 사용합니다. [] 이건데요. 아래서 다룰, 튜플과 딕셔너리와 구분짓는 중요한 개념입니다.

  • 두 번째 : 슬라이싱 기능, 데이터 수정이 가능하다는 것.

데이터 수정이 가능하다는 것은 굉장히 중요한 특징입니다. 튜플과 완전 상반되는 개념이거든요. 그럼 몇가지 함수를 살펴보겠습니다.

  • append : 리스트의 맨 뒤에 새로운 원소를 추가하는 것입니다.

    맨 뒤에 추가됩니다. 중간에 삽입하는 경우는 insert함수를 사용합니다.
  • insert : append와 달리 사용자가 원하는 위치에 원소를 추가하고 싶을 때, 인덱스 넘버를 언급하면서 그 순서에 넣는 것입니다.

    보시면 인덱스 3번. [1,2,3,"Crush",2,2,1,3]에서 인덱스 3번은 Crush입니다. 이 자리에 정수 4를 넣겠다는 것입니다.
    혹시 이 글을 보기전에 C++ STL Vector를 공부하셨거나, 알고리즘을 공부하셨다면 시간복잡도가 append에 비해 큼을 알 수 있을것입니다.
  • count : 찾고자 하는 원소가 동일하게 몇개 있는지 보는 것입니다.

    이런 식입니다. data 리스트에 2라는 원소는 3개가 있다는 뜻입니다.
  • pop/remove : 이 둘은 기능이 같습니다. 리스트 내의 원소를 제거할 때 쓰는 함수인데요. 먼저 pop부터 보겠습니다.

    pop함수의 경우는 인덱스로 접근해서 해당 인덱스에 대응되는 value를 제거합니다.
    하지만, remove의 경우는 인덱스로 접근이 아니라 value로 접근하고 중복되는 원소 값이 있어도 가장 앞에 인덱스에 있는 value 하나만을 제거합니다.

튜플 (Tuple)

튜플은 리스트랑 뭐가 다른가요?

리스트는 데이터 수정이 가능했다면, 튜플은 그렇지 않습니다.

  • 리스트는 대괄호 [] , 튜플은 소괄호 () 로 표현합니다.

튜플의 경우는 변경시키면 안되는 값, 고유값을 선언해야할 때 사용합니다.
예를 들면, 우리가 게임을 플레이하려면 먼저 캐릭터를 생성해야 합니다. 그리고 이 캐릭터에게 닉네임을 지어줘야겠죠?

물론 몇몇 게임은 '닉네임 변경권' 같은 아이템이 있겠지만, 일단 통상적으로 닉네임은 고정입니다. 이런 케이스는 튜플을 써야할 것입니다.

위에 append를 쓰지 않은 튜플은 출력이 잘되지만, append 쓴 애는 에러가 뜹니다. 친절하게 설명하고 있네요. 튜플 객체는 append를 쓸 수 없다!


딕셔너리 (Dictionary)

그럼 딕셔너리는 뭔가요?

딕셔너리는 일단 중괄호 {}를 써서 리스트와 튜플과 구분을 합니다.
딕셔너리는 Key값과 Value값으로 구성됩니다.
이런 특징은 자료구조를 배우신 분들은 굉장히 많이 들어보셨을 '해쉬 테이블 (Hash Table)'과 연관이 깊습니다.

  • 해쉬 테이블이 뭔가요? : 해쉬테이블
    자료구조 카테고리를 조만간 개설해서 함께 설명할 예정입니다!

딕셔너리 자료형을 선언해본 것입니다. Key : Value 시스템으로 구성되었고
Keys값만 따로 출력하였더니 이름과 나이, 사는 곳이 나옵니다.
그리고 Values값만 따로 출력하였더니 그에 대응되는 값이 나옵니다.


다음 포스팅에서는 문자열 슬라이싱에 대해 다루겠습니다.

profile
방구석백수 코드몽키

0개의 댓글