본문 바로가기
프로그래밍/파이썬기초

파이썬 리스트 인덱싱(list indexing)과 슬라이싱(slicing)

by 조크리 2023. 10. 7.
반응형

 

이번 글에서는 파이썬의 리스트(list) 사용법을 알아보겠습니다. 

 
 


목차

     

    1. 리스트란?

     

    리스트란 여러 구성 요소들을 한 개로 묶어 사용하는 것을 말합니다. 

    벌칙 정하기, 청소 당번 정하기, 행운의 뽑기 등을 한다면 리스트에 속해 있는 사람들 중에 한 명이 뽑히게 되겠죠. 

     

    리스트는 어떤 프로그램에서든 많이 사용됩니다.

    아래는 엔트리에서 리스트가 사용된 모습입니다.

    당첨자를 정하는데, 당첨자는 복불복 리스트에 있는 사람 중 무작위로 뽑힌 것을 볼 수 있네요. 

    출처  http://blog.naver.com/PostView.nhn?blogId=gi_sik_in&logNo=220236846057&categoryNo=28&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=

     

    리스트는 아래 그림처럼 길이를 갖습니다.

    리스트의 길이는 리스트에 속해 있는 항목의 개수를 의미합니다. 

    만약 복불복 리스트에 사람이 250명 있었다면 복불복 리스트의 길이는 250이 되는 것이죠. 

    출처  http://blog.naver.com/PostView.nhn?blogId=gi_sik_in&logNo=220236846057&categoryNo=28&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=

     

    리스트를 만들 때에는 변수처럼 만들면 됩니다. 

    아래는 앱인벤터에서 만든 리스트인데요.

    quiz라는 변수를 만들고 변수 내용에 리스트를 만들었습니다. 

    이 리스트 안에는 작은 리스트들이 있는데요. 작은 리스트 각각은 퀴즈와 퀴즈의 정답으로 이루어져 있네요. 

    앱인벤터에서 리스트 활용 모습

    만약 퀴즈를 불러오고 싶다면 리스트에서 항목을 불러오면 됩니다. 

    아래 그림을 보면

    실제 문제를 불러올때 리스트에서 위치(1)을 불러왔는데요. 

    이를 통해 리스트에는 여러 항목이 존재하고 각 항목은 위치가 있다는 것을 알 수 있습니다.

    즉 순서가 있다는 것이죠. 

    앱인벤터에서 리스트 활용 모습

     

    이 순서를 나타내는 것이 인덱싱 입니다. 

     

    2. 리스트 인덱싱(indexing)

     

    파이썬에서 리스트의 항목은 

    인덱싱이 0부터 시작합니다. 

     

    먼저 리스트는 대괄호 [] 안에 항목들을 넣어주는데요.

    numbers 라는 리스트는 숫자 1, 2, 3, 4, 5라는 항목을 갖습니다.

    그리고 인덱싱, 즉 순서를 살펴보면 0, 1, 2, 3, 4가 됩니다.

     

    즉 numbers라는 리스트의 0번째 항목은 1이 되고

    numbers라는 리스트의 1번째 항목은 2가 되는 것이죠. 

     

    이를 코드로 표현하면 numbers[0], numbers[1]이 됩니다. 

    코랩에서 코드를 작성한 화면

    #리스트 만들기
    numbers = [1, 2, 3, 4, 5]
    names = ['준하', '명수', '재석', '형돈', '하하']
    
    #리스트 출력해보기
    print(numbers)
    print(names)
    
    #리스트 인덱싱
    #리스트 내의 항목은 순서를 가지며 0부터 시작한다.
    print(names[1])
    print(numbers[0] + numbers[2])
    #리스트 맨 마지막 항목의 인덱싱은 -1로도 가능
    print(numbers[-1])
    #맨 마지막부터 -1, -2, -3 순서로 인덱싱
    print(numbers[-5])

    실제 코드를 실행시켜 보겠습니다. 

    리스트 항목이 숫자로 구성되어 있다면 그 항목끼리는 계산도 가능하죠. 

     

    3. 리스트 슬라이싱(slicing)

     

    파이썬에서 리스트의 항목은 인덱스를 가집니다.

    그래서 몇 번 부터 몇 번까지 자를 수도 있죠. 

    이렇게 자르는 것을 슬라이싱이라고 부릅니다. 

     

    예시를 한 번 보겠습니다. 

    numbers라는 리스트가 있고 항목은 숫자 1, 2, 3, 4, 5 로 이루어져 있습니다. 

     

    슬라이싱을 할 때는 

    numbers[시작점 : 끝점]

    이렇게 적어줍니다.

    시작점 부터 끝점-1 인덱스 까지를 잘라준다라는 뜻입니다. 

    만약 numbers[0:2] 라면 인덱스 0부터 1까지의 숫자를 가져와라라는 뜻입니다.

    numbers[1:] 이렇게 끝점이 없으면 인덱스 1부터 끝까지 항목을 가져오라는 뜻입니다.

    numbers[:4] 이렇게 시작점이 없으면 인덱스 0부터 시작이 되고 인덱스0부터 인덱스 3까지의 항목이 출력됩니다.

    numbers[:] 라면 전체 항목이 출력됩니다. 

    numbers = [1,2,3,4,5]
    
    #리스트 슬라이싱
    #리스트명[시작점:끝점]
    #range함수와 마찬가지로 끝점-1 범위를 가짐
    print(numbers[0:2])
    print(numbers[1:3])
    print(numbers[1:])
    print(numbers[:])

    실제 실행 모습을 보겠습니다. 

     

    4. 슬라이싱한 리스트를 새로운 리스트에 저장

     

    이렇게 슬라이싱한 리스트를 새로운 리스트에 저장해보겠습니다. 

    #슬라이싱한 리스트를 새로운 리스트에 저장하기
    numbers = [1,2,3,4,5]
    
    #new_list라는 새로운 리스트 만들기
    new_list = numbers[:3]
    print(new_list)
    #새로운 리스트에서 항목 출력해보기
    print(new_list[2])

    실행시켜보겠습니다. 

    새로운 리스트가 출력되고, 새로운 리스트에서 인덱스 2 항목인 숫자 3이 출력된 것을 확인할 수 있습니다. 

     

    5. for반복문으로 리스트의 모든 항목 출력하기

     

    리스트에 있는 모든 요소(항목)을 출력해볼까요?

    for 반복문은 range()함수와 함께 사용되는데요.

    range()함수의 괄호 안에 len(리스트이름)을 작성한다는 것은

    range(리스트의 항목의 개수)와 같은 의미입니다. 

     

    아래코드의 경우

    names 리스트는 총 5개의 항목을 가지고 있는데요.

    for 반복문의 range()함수 괄호 안에 len(names)가 들어가있죠.

    여기서 len(names)는 names리스트 항목의 개수인 5를 의미합니다. 

    names = ['준하', '명수', '재석', '형돈', '하하']
    
    for i in range(len(names)):
    	print(names[i])

    실행시켜 보겠습니다. 

    names리스트 안에 있는 모든 항목이 다 출력되는 것을 볼 수 있죠!

     

    반응형