티스토리 뷰

📌 목차

    파이썬 슬라이싱

    슬라이싱이란?

    파이썬에서 슬라이싱(Slicing)은 시퀀스(Sequence) 객체를 잘라내는 기능을 제공합니다. 시퀀스 객체란 데이터의 순서가 정해진, 원소가 여러 개 있는 자료형을 의미합니다. 리스트(List), 튜플(Tuple), 문자열(String), 바이트(Byte), 바이트 배열(Bytearray) 등이 시퀀스 객체에 해당합니다.

    슬라이싱을 이용하면 시퀀스 객체에서 일부분만 가져와서 새로운 시퀀스 객체를 만들 수 있습니다. 이를 통해, 시퀀스 객체에서 원하는 데이터를 쉽게 추출하거나, 시퀀스 객체를 분할하여 처리할 수 있습니다.

    슬라이싱의 기본 문법은 다음과 같습니다.

    시퀀스객체[시작인덱스:끝인덱스:간격]
    • 시작 인덱스는 슬라이싱할 구간의 시작 위치를 나타냅니다.
    • 끝 인덱스는 슬라이싱할 구간의 끝 위치 + 1을 나타냅니다.
    • 간격은 슬라이싱할 구간에서 가져올 데이터의 간격을 나타냅니다. 생략하면 기본 값인 1이 사용됩니다.

    예를 들어, 리스트 lst에서 인덱스 1부터 3까지의 데이터를 추출하고 싶다면 다음과 같이 슬라이싱할 수 있습니다.

    lst = [1, 2, 3, 4, 5]
    sub_lst = lst[1:4]  # [2, 3, 4] 출력

    이처럼 슬라이싱을 사용하면 시퀀스 객체에서 원하는 부분을 쉽게 추출할 수 있습니다. 슬라이싱은 파이썬에서 매우 유용한 기능 중 하나이며, 다양한 예제를 통해 더욱 자세히 알아보도록 하겠습니다.

     

    리스트 슬라이싱 예제

    리스트(List)는 파이썬에서 가장 많이 사용되는 시퀀스(Sequence) 객체 중 하나입니다. 리스트 슬라이싱은 리스트에서 일부분만 추출하여 새로운 리스트를 만들어내는 기능입니다. 다음은 리스트 슬라이싱에 대한 예제 5개입니다.

    1) 인덱스 범위를 지정하지 않은 경우

    lst = [1, 2, 3, 4, 5]
    sub_lst = lst[:]
    print(sub_lst)  # [1, 2, 3, 4, 5] 출력

    인덱스의 범위를 지정하지 않으면 리스트 전체를 추출합니다.

    2) 시작 인덱스만 지정하는 경우

    lst = [1, 2, 3, 4, 5]
    sub_lst = lst[2:]
    print(sub_lst)  # [3, 4, 5] 출력

     

    3) 끝 인덱스만 지정하는 경우

    lst = [1, 2, 3, 4, 5]
    sub_lst = lst[:3]
    print(sub_lst)  # [1, 2, 3] 출력

     

    4) 리스트에서 일부 데이터 추출하기

    리스트에서 특정 범위의 값을 추출하기

    lst = [1, 2, 3, 4, 5]
    sub_lst = lst[1:4]  # [2, 3, 4] 출력

     

    5) 리스트에서 일정 간격으로 추출하기

    lst = [1, 2, 3, 4, 5]
    sub_lst = lst[::2]  # [1, 3, 5] 출력

     

    6) 리스트 역순으로 출력하기 

    numbers = [1, 2, 3, 4, 5]
    reversed_numbers = numbers[::-1]
    print(reversed_numbers)  # [5, 4, 3, 2, 1] 출력

    리스트를 역순으로 뒤집으려면 슬라이싱을 사용합니다. 이때 간격을 -1로 설정하여 리스트를 뒤집을 수 있습니다.

     

    7) 리스트 중복 제거하기

    리스트에서 중복 제거 하려면 set() 함수를 사용 하면 된다. 그러나, set()을 사용하면 순서를 보장하지 않으므로 결과 리스트를 정렬하려면 슬라이싱을 사용한다.

    fruits = ['apple', 'banana', 'cherry', 'apple', 'orange']
    unique_fruits = sorted(list(set(fruits)))
    print(unique_fruits)  # ['apple', 'banana', 'cherry', 'orange'] 출력

     

    8) 홀수 인덱스 값 추출하기

    lst[1::2]는 리스트 lst에서 인덱스 1부터 끝까지(2칸 간격으로) 슬라이싱하여 홀수 인덱스에 해당하는 요소들만 추출합니다.

    lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    odd_lst = lst[1::2]
    print(odd_lst) # [2, 4, 6, 8]

     

    9) 짝수 인덱스 값 추출하기

    lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    even_lst = lst[::2]
    print(even_lst) # [1, 3, 5, 7, 9]

     

    10) 다차원 리스트 슬라이싱 _ 2차원

    arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    print(arr[:2]) # [[1, 2, 3], [4, 5, 6]]
    print(arr[1:]) # [[4, 5, 6], [7, 8, 9]]
    print(arr[1:2]) # [[4, 5, 6]]

    위 예제에서 arr[:2]는 첫 번째 차원에서 0번째와 1번째 요소를 추출합니다. arr[1:]은 첫 번째 차원에서 1번째부터 끝까지의 요소를 추출합니다. arr[1:2]는 첫 번째 차원에서 1번째부터 2번째 요소까지 추출합니다.

     

    11) 다차원 리스트 슬라이싱 _ 3차원

    lst = [[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]]
    new_lst = lst[1:3][0:2][1:3]
    print(new_lst)  # [[[7, 8]]]

    위 예제에서는 3차원 리스트의 첫 번째 차원에서 1번 인덱스부터 2번 인덱스까지, 두 번째 차원에서 0번 인덱스부터 1번 인덱스까지, 세 번째 차원에서 1번 인덱스부터 2번 인덱스까지 추출합니다. 결과적으로 [[[7, 8]]]이라는 3차원 리스트가 출력됩니다.