ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 | 복합자료형(1): 리스트, 튜플
    Programming/Python 2025. 2. 28. 18:00

    1. 복합자료형

    복합자료형

       한 변수에 한 가지 값만을 저장할 수 있는 기본자료형에 비해, 복합자료형은 한 변수에 여러 가지의 값을 저장하고 다룰 수 있다. 이러한 복합자료형에는 리스트와 튜플, 딕셔너리, 세트가 있다. 파이썬은 변수에 할당하는 값의 형태에 따라 변수의 복합자료형을 자동으로 할당한다. 이번 장에서는 리스트튜플을 먼저 살펴보자.
     

    2. 리스트

    리스트

       리스트(list)는 순서가 있는 형태로 여러 개의 저장 공간을 참조한다. 대괄호 안에 객체를 쉼표로 구분하여 입력하는 것으로 리스트를 생성할 수 있다. 리스트는 어떠한 자료형도 담을 수 있으며, 따라서 기본자료형 외에도 복합자료형 또한 하나의 객체로 취급하여 아래 예시처럼 생성할 수 있다.

    a = [1, 2, 3, 4, 5]
    b = ['a', 'b', 'c']
    c = [1, 'a', 2, 'b', 3, 'c']
    d = [1, ['Hello World!', 'Happy New Year'], 2, [20250127, '20250127'], 3]
    
    print(type(a), type(b), type(c), type(d))	# 변수의 자료형 출력

     

    2.1. 인덱스

     

    리스트 인덱스

       리스트도 순서가 있기 때문에 각 객체마다 위치가 정해져 있으며, 인덱스를 호출하는 것으로 해당 위치에 있는 객체를 불러올 수 있다. 첫 번째 객체의 인덱스는 0에 해당하며, 마지막 객체의 인덱스는 리스트의 길이보다 하나 작은 숫자 혹은 -1에 해당한다. 리스트에서 특정 인덱스 번호에 해당하는 문자를 가져오고 싶다면, 아래 예시처럼 리스트 옆에 대괄호를 작성하고 대괄호 안에 인덱스 번호를 넣으면 된다. 만약 리스트에서 특정 범위에 해당하는 객체들을 가져오고 싶다면, 아래 예시처럼 대괄호 안에 시작 인덱스 번호와 쌍점, 끝 인덱스 번호를 넣으면 된다. 이때 끝 인덱스 번호에 해당하는 객체는 포함되지 않는다는 것을 주의하자. 시작 인덱스 번호와 끝 인덱스 번호는 생략할 수 있다.

    example = [1, ['Hello World!', 'Happy New Year'], 2, [20250127, '20250127'], 3]
    
    print(example[0])		# 리스트에서 인덱스 0번에 해당하는 객체 출력
    print(example[4])	
    print(example[-1])		# 리스트에서 마지막 인덱스에 해당하는 객체 출력
    
    print(example[0:2])		# 리스트에서 인덱스 0번부터 1번까지의 객체를 리스트로 출력
    print(example[:5])		# 리스트에서 처음 인덱스부터 1번까지의 객체를 리스트로 출력
    print(example[2:5])	
    print(example[2:])		# 리스트에서 인덱스 2번부터 마지막 인덱스까지의 객체를 리스트로 출력
    
    print(example[1][0])		# 인덱스 1번에 있는 리스트 호출 후, 해당 리스트의 인덱스 0번 출력  
    print(example[3][1])

     

    2.2. 재할당

       리스트는 교체하고자 하는 객체의 인덱스 번호를 지정하고 새로운 값을 할당할 수 있다.

    example = [1, ['Hello World!', 'Happy New Year'], 2, [20250127, '20250127'], 3]
    
    example[3] = 'a'		# 리스트에서 인덱스 3번에 해당하는 객체를 'a'로 재할당
    print(example)
    
    example[1][0] = 'VEDACUBE'	# 인덱스 1번에 있는 리스트 호출 후, 해당 리스트의 인덱스 0번에 해당하는 객체를 'VEDACUBE'로 재할당
    print(example)

     

    2.3. 연산자

       리스트는 두 가지 종류의 연산자를 지원한다. 리스트 연산에서 더하기 연산자는 두 리스트의 객체를 모두 결합하여 하나의 리스트로 반환하는 기능을 하며, 곱하기 연산자는 리스트에 곱하는 숫자만큼 객체를 반복하여 하나의 리스트로 반환하는 기능을 한다.  

    a = [1, 2, 3, 4, 5]
    b = ['a', 'b', 'c']
    
    print(a + b, type(a + b))	# 더하기
    print(a * 10, type(a * 10))	# 곱하기

     
    2.4. 메소드

       메소드(method)는 특정 자료형 전용으로 구현된 함수이다. 자료형이 할당된 변수 오른쪽에 점을 입력하고, 사용하고자 하는 메소드를 입력하면 동작한다. 메소드는 사전에 정의된 자료형과만 동작하기 때문에 각 자료형마다 어떤 메소드가 있는지 확인해둘 필요가 있다. 아래 링크로 접속하면 리스트와 사용할 수 있는 주요 메소드를 확인할 수 있다.

     

    3. 튜플

    튜플

       튜플(tuple) 또한 순서가 있는 형태로 여러 개의 저장 공간을 참조한다. 소괄호 안에 객체를 쉼표로 구분하여 입력하는 것으로 튜플을 생성할 수 있다. 이때 소괄호는 생략할 수 있으며, 반드시 쉼표로 객체를 구분해야 한다. 튜플은 어떠한 자료형도 담을 수 있으므로, 기본 자료형 외에도 복합자료형 또한 하나의 객체로 취급하여 아래 예시처럼 생성할 수 있다. 

    f = (1, 2, 3, 4, 5)
    g = 'a', 'b', 'c'
    h = (1, 'a', 2, 'b', 3, 'c')
    i = 1, ('Hello World!', 'Happy New Year'), 2, [20250127, '20250127'], 3
    
    print(type(f), type(g), type(h), type(i))	# 변수의 자료형 출력

       기본자료형 객체가 하나만 있는 튜플을 생성할 때에는 반드시 객체 뒤에 쉼표를 붙여주어야 한다. 소괄호 안에 객체를 넣어 정의하더라도 객체 뒤에 쉼표 없이 생성한다면, 튜플이 아닌 기본자료형으로 생성된다. 튜플을 생성할 때에는 소괄호보다는 쉼표로 객체를 구분하는 것이 가장 중요하다.

    l = (2025)
    m = (2025,)
    n = 2025
    o = 2025,
    
    print(type(l), type(m), type(n), type(o))

     

    3.1. 인덱스

     

    튜플 인덱스

       튜플도 리스트처럼 순서가 있기 때문에 각 객체마다 위치가 정해져 있으며, 인덱스를 호출하는 것으로 해당 위치에 있는 객체를 불러올 수 있다. 객체를 불러오는 방식은 리스트와 동일하다.

    example = (1, ('Hello World!', 'Happy New Year'), 2, [20250127, '20250127'], 3)
    
    print(example[0])		# 튜플에서 인덱스 0번에 해당하는 객체 출력
    print(example[4])	
    print(example[-1])		# 튜플에서 마지막 인덱스에 해당하는 객체 출력
    
    print(example[0:2])		# 튜플에서 인덱스 0번부터 1번까지의 객체를 튜플로 출력
    print(example[:5])		# 튜플에서 처음 인덱스부터 1번까지의 객체를 튜플로 출력
    print(example[2:5])	
    print(example[2:])		# 튜플에서 인덱스 2번부터 마지막 인덱스까지의 객체를 튜플로 출력
    
    print(example[1][0])		# 인덱스 1번에 있는 튜플 호출 후, 해당 튜플의 인덱스 0번 출력  
    print(example[3][1])		# 인덱스 3번에 있는 리스트 호출 후, 해당 리스트의 인덱스 1번 출력

     
    3.2. 재할당 불가

       튜플과 리스트의 가장 큰 차이점은, 튜플은 한 번 생성되면 객체를 새로운 값으로 갱신할 수 없다는 것이다. 따라서 리스트처럼 특정 객체를 다른 값으로 대체하는 것이 불가하다. 그렇기에 튜플은 값이 변하면 안 되는 경우나, 처리 속도를 올리거나 저장 공간을 절약해야하는 경우에 많이 사용한다.
     

    3.3. 연산자

       튜플도 두 가지 종류의 연산자를 지원한다. 투플 연산에서 더하기 연산자는 두 튜플의 객체를 모두 결합하여 하나의 튜플로 반환하며, 곱하기 연산자는 튜플에 곱하는 숫자만큼 객체를 반복하여 하나의 튜플로 반환한다.  

    f = (1, 2, 3, 4, 5)
    g = 'a', 'b', 'c'
    
    print(f + g, type(f + g))	# 더하기
    print(f * 10, type(f * 10))	# 곱하기

     

    3.4. 튜플 할당

    튜플 할당

       튜플 할당이란 등호를 기준으로 우변의 값이나 변수를 좌변의 같은 위치에 있는 변수에 각각 할당하는 것이다. 튜플 할당과 연산을 동시에 지원하지는 않으므로 우변에 놓이는 값이나 변수는 할당하기 전에 미리 계산된 것이어야 한다. 튜플 할당을 하기 위해서는 좌변과 우변의 개수가 반드시 일치해야 한다. 이를 이용하면 명령문 한 줄로 여러 변수에 값을 할당하거나, 두 변수에 저장된 값을 교환할 수 있다.

    x, y, z = 1, '2', [3, '4', 5]	# 튜플 할당
    print(x)
    print(y)
    print(z)
    
    z, y = y, z			# 두 변수에 할당된 값 교환
    print(x)
    print(y)
    print(z)
    
    i, j, k = y			# 변수에 저장된 리스트의 객체들을 튜플 할당
    print(i)
    print(j)
    print(k)

     

    3.5. 튜플 패킹

     

    튜플 패킹

       좌변과 우변의 개수가 일치하지 않더라도 튜플 패킹을 이용하면 튜플 할당을 할 수 있다. 튜플 패킹은 우변에 있는 값들을 튜플로 묶어 좌변에 있는 변수 하나에 할당하는 것이다. 아래 예시처럼 좌변의 변수 중 어느 한 변수 앞에 곱하기 부호를 붙이면 튜플 패킹을 할 수 있다. 이때 좌변의 변수는 반드시 두 개 이상이어야 하며, 좌변에서 곱하기 부호가 붙은 변수의 위치에 따라 해당 변수에 패킹되어 할당되는 개수가 달라진다.

    p, q, *r = 1, '2', [3, '4', 5], '6', 7, ['8', 9]	# 튜플 패킹 후 튜플 할당
    print(p)
    print(q)
    print(r)
    
    p, *q, r = 1, '2', [3, '4', 5], '6', 7, ['8', 9]
    print(p)
    print(q)
    print(r)
    
    *p, q, r = 1, '2', [3, '4', 5], '6', 7, ['8', 9]
    print(p)
    print(q)
    print(r)

     
     
     
     
     

    [함께 읽으면 좋은 페이지]

     

     

    파이썬 | 변수와 기본자료형: 정수형, 실수형, 논리형, 문자열

    1. 변수   변수는 컴퓨터 메모리에 있는 저장 공간을 참조하기 위해 사용하는 이름이다. 저장 공간에 이름을 붙인 뒤 원하는 값을 저장하거나 불러올 때 사용한다. 프로그래밍 언어에서는 저장

    vedacube.tistory.com

     

    파이썬 | 복합자료형(2): 딕셔너리, 세트

    1. 복합자료형   한 변수에 한 가지 값만을 저장할 수 있는 기본자료형에 비해, 복합자료형은 한 변수에 여러 가지의 값을 저장하고 다룰 수 있다. 이러한 복합자료형에는 리스트와 튜플, 딕셔

    vedacube.tistory.com

     

     

     

     

     

    참고문헌
    - 박진수. (2019). 바로 쓰는 파이썬. 서울대학교출판문화원

    반응형

    댓글

Designed by Tistory.