Responsive Advertisement

파이썬 프로그래밍 - 자료형, 리스트 자료형, 리스트 선언, 리스트 인덱싱, 리스트 슬라이싱

리스트는 목록이라는 뜻입니다. 리스트는 프로그래밍에서 중요한 자료형 중에 하나예요. 여러 개의 값을 하나의 변수 이름으로 묶어 관리할 수 있는 방법을 제공합니다.

썸네일

리스트의 선언

리스트를 선언할 때는 아래와 같이 대괄호 안에 리스트에 포함할 여러 자료를 콤마(,)로 나열합니다

[자료1, 자료2, 자료3, ...]

리스트의 내용은 다양한 자료를 포함할 수 있습니다. 정수형, 문자열, 불리언 등 서로 다른 타입을 하나의 리스트에 포함 시킬 수 있어요. 다양한 자료형을 다룰 수 있는 유연성 덕분에 리스트는 데이터 처리에 매우 유용하게 활용할 수 있습니다. 다만, 리스트를 위와 같은 형태로 단순히 선언만 할 것이 아니라, 적절히 활용하기 위해 변수와 함께 선언하는 것이 일반적입니다.

인덱스 예시

리스트는 다양한 자료형을 혼합하여 저장할 수 있지만, 일반적으로 관련성이 있는 자료들을 묶는 것이 가독성과 코드 관리 측면에서 좋습니다. 예를 들면, 학생들의 이름과 나이를 하나의 리스트로 묶기보다는 자료의 속성에 맞게 각각 이름 리스트, 나이 리스트를 만드는 것이 더 명확하고 효율적일 수도 있습니다. 물론, 무엇을 만들고자 하느냐에 따라 다릅니다.

리스트 인덱싱

리스트는 인덱스를 통해 접근할 수 있습니다. 리스트의 인덱스는 문자열의 인덱스와 마찬가지로 0번부터 시작합니다. 예를 들어, list1 = [1, 2, 3, 4]와 같이 선언되었을 때 list1[0]은 1을, list1[2]는 3을 반환합니다. 또한 음수를 사용하면 리스트의 끝에서부터 인덱스를 지정하게 됩니다. 예를 들어 list1[-1]은 리스트의 마지막 요소인 4를, list1[-2]는 그 앞의 요소인 3을 반환하게 됩니다. 이를 잘 기억해두면 리스트의 뒤쪽에서부터 자료에 접근할 때 유용하게 활용할 수 있습니다. 

리스트 슬라이싱

리스트 슬라이싱

리스트 슬라이싱을 통해 리스트 중 일부 요소를 추출하거나 수정할 수 있습니다. 슬라이싱은 문자열에서 사용되는 것과 같은 방식으로 작동하며, list1[a:b]와 같은 형식으로 사용할 수 있습니다. 여기서 a는 시작 인덱스이고, b는 끝 인덱스인데, 문자열의 슬라이싱과 마찬가지로 a부터 b-1번째 요소까지 슬라이싱한다는 것을 명심하세요. 예컨대, list1[1:3]은 list1의 두 번째 요소부터 네 번째 요소까지 추출하게 됩니다. 또, list1[:3]은 처음 세 개의 요소를 반환하고, list1[3:]은 네 번째 요소부터 끝까지 반환하게 됩니다.

리스트 이어 붙이기

리스트 이어 붙이기는 리스트를 확장할 때 유용합니다. +연산자를 사용하여 두 리스트를 이어 붙일 수 있고 이를 통해 새로운 리스트를 만들 수 있습니다. 예를 들어, list1=[1, 2]와 list2=[3, 4]가 있을 때, list1 + list2는 [1, 2, 3, 4]라는 새로운 리스트를 생성합니다. 그러나, 생성된 리스트가 어딘가에 저장되지 않으면 활용하기 어렵기 때문에 새로운 변수에 할당하는 것이 좋습니다. 그리고, 리스트를 이어 붙이기 위한 연산을 수행하더라도 list1과 list2는 보존됩니다. 

리스트 슬라이싱으로 자료 변경


리스트 슬라이싱은 데이터를 변경하거나 삭제하는 데에도 활용할 수 있습니다. 예를 들어, list1[1:3] = [9, 8]을 수행하면 list1의 두 번째와 세 번째 요소가 [9, 8]로 변경됩니다. 또한 list1[2:4] = []처럼 빈 리스트를 할당하면 지정된 범위의 데이터를 삭제할 수 있습니다. 이 방법은 특정 범위의 데이터를 수정하거나 삭제할 때 매우 직관적이고 효율적으로 작동합니다. 전체 리스트를 비우고 싶다면 list1[:]=[]와 같이 슬라이싱을 적용하면 됩니다.

마치며

리스트를 활용하면 데이터를 저장하고 다루는 데 있어 많은 편리함을 제공합니다. 그러나 크기가 커질수록 성능에 영향을 줄 수도 있어요. 따라서 리스트의 크기와 데이터를 효율적으로 관리하는 방법을 고민해야 합니다. 아직 튜플을 배우지는 않았지만 아주 큰 데이터를 다룰 때는 리스트 대신 튜플을 사용하는 것이 효율적일 수도 있어요. 아무튼 그렇습니다.

{getContent} $results={5} $label={recent} $type={block}