본문 바로가기
IT/Python 기초

[Python] 파이썬 기초 #7 - 리스트와 튜플 (1)

by Tony Jung 2022. 3. 21.
반응형

 

이번 포스트에서는 파이썬의 리스트 (List)와 튜플(Tuple)에 대하여 알아 보려합니다.

두개 다 복수의 값을 담을 수 있는 데이터 형이지만 리스트"생성된 후에 변경이 가능"하다는 점과 튜플"생성된 후에 변경이 불가능 하다"는 큰 차이점이 있답니다. 

  • LIST 

기본적으로 리스트 형은 변수에 값을 저장할 때 대괄호 [ ] 로 값을 묶어주며 각각의 값은 콤마 (,)로 구분 됩니다. 

리스트 = [값1, 값2, 값3 ,.........]

여기서 리스트에 저장된 값들은 요소 (Element)라고 부른답니다. 특이한 점은 아래의 예제 2 처럼 리스트의 요소는  문자열, 정수, 실수, booleam 값을 한번에 모두 가질수 있습니다. 

예제#1
예제 2

초기 리스트에 입력될 값이 없을 때는 초기화 하여 아래의 두가지 방법으로 리스트의 생성이 가능합니다. 예제 3은 비어있는 대괄호로 값을 지정하여 초기화된 리스트를 생성하는 방법과  list()함수를 지정하여 초기화된 리스트를 생성하는 방식입니다. 

예제 3 초기화된 리스트 생성

초기화되어 정의된 리스트에는 이후에 필요한 값을 정의 할 수 있습니다. 

예제 4 리스트에 값 입력

리스트를 사용할 때는 리스트 인덱싱에 대하여 정확히 인지하여야 합니다. 인덱스는 아래와 같이 구분되어 지며 특정한 인덱스에 값을 변경하거나 리스트 슬라이싱을 할 때 사용됩니다. 

리스트형 a=[1,2,3,4,5,6]의 인덱스 0의 값은 1이며 5의 값은 6으로 추출됩니다.  해당 리스트의 마지막 요소의 값을 추출 할 때는 해당요소의 인덱스 값을 사용하여도 되지만 a[-1]을 지정하면 리스트의 마지막 요소의 값이 추출 됩니다.  또한 이미 지정된 리스트값을 변경할 때에는 인덱스를 지정하고 새로운 값으로 변경 하면 리스트의 값이 변경됩니다. 

리스트의 요소들은 아래와 같이 슬라이싱을 통해 원하는 값을 추출 할 수 있답니다. 

Case 1 :  [Start : End]
Case 2 :  [Start : End : Step]

Case1 의 Start 는 ~부터로 "Start 가 포함"되는 인덱스 값이며 End 는 ~ 이전 까지로 "해당 인덱스 이전의 값"까지를 의미합니다. 이해가 쉽게 되도록 아래 예제 참고 ~

a[1:5] 는 리스트형 a의 인덱스 1(값 2) 부터 인덱스 5(값 6)까지 가 아니라 인덱스 5전의 값 4가 출력됩니다.  Case 2의 Step 은 간격의 의미 합니다. 

 

반응형

 

  • LIST 활용 

1. max, min, sum, len

정수,실수 형의 요소값을 가지고 있는 리스트 에서 자주 사용하는 함수로 리스트 요소 중 최대값 (max) , 최소값(min), 합계(Sum), 길이/개수(Len) 를 표현할 수  있답니다.

2. 요소 값  추가 

요소 값이 이미 정의되어 있는 리스트형에 insert(인덱스, 값)을 이용하여 새로운 값을 추가 할 수 있습니다. 또한 리스트의 맨 끝에 항목을 추가할 때는 간편하게 append 를 이용하여 추가 합니다. 

3. 삭제 ( Remove, Del)

Remove 를 이용하여 원하는 값을 리스트에서 삭제 할 수 도 있으며 반대로 원하는 인덱스 값을 지정하여 Del 로 삭제 하는 방법도 있답니다. 

4. 찾기  (Index, In, Count)

리스트에 정의된 특정값의 인덱스 값을 찾을 때는 Index (값)을 지정하면 쉽게 요소의 인덱스 값을 찾을 수 있답니다.  그리고 원하는 값이 리스트에 존재하는 지 여부를 판단할 때는  '찾을 값' in '리스트'  으로 찾을 수 있답니다.다만 반환값은 True , False 입니다.  음..in은 MSSQL 에서 자주 사용하는 쿼리로 많이들 익숙 하실 것이라 봅니당.  또한 리스트 안에 원하는 값이 몇개 있는지 확인 할 때는 Count(값)을 사용할 수 있답니다. 

 

5. 정렬 

외부 데이터를 가져와서 리스트로 저장 하였거나 이미 정렬되어 있으나 때에 따라 정렬기준을 변경이 필요할 경우 우리는 리스트의 값을 정렬하여 사용하여야 합니다.  아래 처럼 리스트의 값이 순서없이 입력되어 있을 때 사용됩니다. 

Sort :  리스트의 요소를 정렬 
Reverse :  두 가지 경우로 사용되는데 리스트 요소의 값을 처음과 끝을 바꾸는 경우와 Sort와 같이 사용될 시 값에 따라 순차,역 정렬 할 때 사용됨. 
Sorted :  리스트 요소를 순차 정렬하여 다른 리스트에 본사본으로 변환할 때 사용. 

설명이.. 어렵죠? 아래의 예를 볼까요? 

순서없이 정수값이 입력된 리스트 a 를 reverse = True (역정렬) 하는 방식 입니다. 만약 False 일 경우 아래와 같이 정렬이 되겠지요? 

위의 정의 처럼 Reverse를 Sort 와 사용하지 않고 독립적으로 사용하면 아래와 같이 값 자체가 뒤집어 진답니다. 정렬하고는 거리가 멀죠?  

sorted는 리스트 a는 그대로 두고 정렬을 시켜서 새로운 리스트로 복사하는 방식입니다. 

복사한 리스트 b를 b.sort(reverse=True)로 역정렬할 수도 있고 이미 정렬되었으니 b.reverse()로 단순 역정렬도 가능하겠네요. 

6.Range 사용 

연속된 숫자를 사용하는 range 를 사용해서도 리스트를 생성 할 수 있답니다. 만약 0 부터 9까지의 숫자가를 리스트로 만들고 싶다면 
a=list(range(10)) 이 될것입니다. 여기서도 주의할 것은 range의 10 을 지정하면 지정한 횟수는 포함되지 않는다고 생각하시면 됩니다. (0~9 는 10 개니깐...)

아..나는 0부터 시작하지 않고 1부터 시작해서 10이 포함되었으면 좋겠다고 생각하시면 range(시작, 끝)을 이용하시면 되며 마찮가지로 range(시작, 끝, 증가폭)을 활용하여 시작과 끝사이의 증가폭 만큼 증가되는 값을 입력 할 수 있답니다. 

 

리스트와 튜플 두개 모두 포스팅하려 했는데.. 리스트만 설명해도 이렇게 길어졌네요. 개발 시 요소요소에 필요한 기능들이니 꼭 익혀주시고.. 튜플은 다음 포스팅에.. ~ 

반응형

댓글