IT/Python

[Python] 리스트

김반장님 2021. 3. 26. 13:49
반응형

1.1 리스트 

리스트는 좀 전(?)의 포스트에서 잠깐 나온적이 있지만, 이번에는 조금 더 들어가 보도록 하자. 여담으로 지금 보는 책이 500페이지가 넘는데 그 때까지 계속 하나하나 올릴 수 있을지도 걱정이다... 

나 역시 조금씩 보면서 포스팅 하고 있는 중이라. 혹시라도 빠르게 배우고 싶은 신 분이 계신다면 다음 사이트를 추천합니다. 

 왕초보를 위한 Python 2.7 - http://wikidocs.net/read/book/136 

다시 본론으로~ 리스트는 값이 나열이다. 배열처럼 순서가 있으며, 여러 종류를 담을 수 있다.  또한 0부터 시작하는 인덱스 기능이 있으며, 슬라이싱도 가능하다. 

암튼 일단 그냥 해보자. 

 

[ 그림 1-1 ]

 

[ 그림 1-1 ] 처럼 리스트를 하나 만들어 보았다. 허전하다... 추가 쫌! 해보자. 추가할 때는 append() 메서드를 사용한다. 

 

[ 그림 1-2 ]

 

[ 그림 1-2 ] 를 보면 알겠지만 append()로 추가된 'ddd' 값은 맨 뒤에 추가 되었다. 

그렇다면 이번엔 원하는 위치에 값을 넣어보자. 이때는 insert() 란 걸 사용한다. 다음은 1번 자리에 'eee' 문자열을 삽입한 모습이다. 

  

[ 그림 1-3 ]

 

오~ 추가~ 하나만 넣으니까 심심하다. 많이 두개 넣어보자. extend() 메서드를 사용해서 두개! 넣어보자. 

 

[ 그림 1-4 ]

 

리스트에서는 더하기(+) 연산자를 지원한다. 뭔 소리지 모르겠다. 일단 보자 (설명많은 걸 싫어해서) 

 

[ 그림 1-5 ]

 

설명 안해도 되나? += 로 추가 할수도 있다~~는 말이다. 값이 뒤로 간다는 것 알아두고~ 

extend() 메서드 처럼 튜플이나 리스트 같은 순회 가능한 값을 넣어야 한다는 것이 중요하다. 그렇지 않으면 아래 'hhh' 를 넣었을 때 처럼 그냥 문자열로 넣으면 하나씩 문자열을 쪼개서 들어가게 된다는 것!!! 

다음은 index() 메서드를 알아보겠다. index() 메서드는 인자값을 넣은 문자열의 시작점을 알려준다.  

 

[ 그림 1-6 ]

 

저것만 보고 이해했다면 똑똑한 편. 난 모르니까 설명을 써놔야 겠다.

var 라는 리스트에는 현재 aaa 가 0번째 그리고 7번째에 들어가 있다.(왼쪽부터 0, 1, 2,...) 

 index() 란 메서드를 사용하면 처음 찾은 결과만 반환한다. 그래서 var.index('aaa') 하면 0이 반환된다.  

index() 의 두 번째 인자로 시작점을 알려주면 7번째에 있다고 알려준다.  

 

시작점과 마찬가지로 세 번째 인자로 종결점을 지정할 수 있다. 주의 해야 할 것은 사이에 값이 없으면 [ 그림 1-6 ] 처럼 에러가 발생한다. 이 부분이 잘 모르겠다 하면 아래 그림을 보자.  

 

[ 그림 1-7 ]

 

var 리스트에 존재하는 값들이다. [ 그림 1-6 ] 에서 나온 명령인 var.index('aaa', 1, 5) 가 왜???????? 에러가 나지????? 

시작점인 1의 위치 'eee' 와 끝지점 5의 위치 'fff' 사이에 찾고자 하는 문자열인 'aaa'가 존재하지 않기 때문이다. 

 

 이번에는 count()와 pop() 메서드이다. 내 스타일은 역시 일단 해보고~ 

  

[ 그림 1-8 ]

 

[ 그림 1-8 ] 을 보면 굳이 설명할 필요가 없을 것 같다. count() 로 문자열 'aaa'의 개수를 반환하고, pop() 으로 리스트 뒤에서 부터 뽑아낸다. 단, pop()에 인자값을 주면 해당 인자 위치의 값을 뽑아낸다. 물론 리스트 목록에서 사라진다. 

  그렇다면 이번엔 그냥 삭제 해보자. 삭제는 remove() 를 사용한다. 

 

[ 그림 1-9 ]

 

추가하고, 삽입하고, 개수찾고, 삭제까지 해보았다. 그럼 이 정리 안된 것(?)들을 정리해보자.(미리 준비된 var 리스트) 

    

[ 그림 1-10 ]

 

손쉽게 정렬하기 위해 순방향 정렬 sort() 와 역방향 정렬인 reverse() 메서드가 파이썬에서 제공된다. 

또한 sort() 메서드에서는 자신이 원하는 방식으로 정렬할 수가 있다. 다음에 나오는 스크립트는 이해가 되지 않는 부분이 있을 것이다. 그 부분은 다음에 포스팅할 예정이니 그냥 넘어가도록 하자.  

 

[ 그림 1-11 ]

 

여기서 간단히 설명하면 def로 mysort()라는 함수를 정의하고 그 함수는 x라는 문자를 기준으로 비교하여 정렬을 수행하는 것이다. 일단 여기까지 하고 중점은 리스트에서 추가, 삽입, 삭제 연습이 더 필요하다. 충분히 연습하도록 하자. 

    

[ 그림 1-12 ]

 

중요한 걸 깜빡했다! [ 그림 1-12 ] 를 보면 알겠지만, 정렬된 값이 리턴되어 돌아오는 것이 아니라 var 라는 변수가 정렬되어 저장되는 것이다. 가끔 실수할 수 있는 부분이니 참고하도록 하자. 

 

[ 그림 1-13]

 

또한 [ 그림 1-13 ] 처럼 스택과 큐 구조로 데이터의 처리가 가능하다. 

반응형

'IT > Python' 카테고리의 다른 글

[Python] 튜플  (0) 2021.03.28
[Python] 세트  (0) 2021.03.27
[Python] 유니코드  (2) 2021.03.25
[Python] 문자열  (0) 2021.03.24
[Python] 변수 / 수치  (0) 2021.01.24