파이썬에서 가장 많이 사용하는 변수 형 중 하나로 리스트가 있습니다. 다른 언어에서 배열로 생각하면 되지만 다른 언어보다 기능이 좀 더 추가되어서 진화된(?) 배열이라고 생각하시면 될 것 같습니다. 그리고 나중에 학습 할 Numpy 배열인 Ndarray는 보다 더 효율적인 함수들을 많이 가지고 있습니다. 그럼 IDE를 키시고 코딩을 시작하시죠.

 

 

1. 리스트의 생성과 인덱싱/슬라이싱

 

 - 리스트의 생성은 위아 같이 a = [ ]  처럼 셍성을 합니다. 만약 [ ] 로 생성을 하면 빈 배열을 생성한다는 뜻인데, 처음에는 초기화 해주는 것이 좋습니다. Null값 때문에 값을 넣을 수 없다는 에러 값을 자주 내뱉기 때문입니다. 부득이한 경우에는 어쩔 수 없지만 말이죠.

 

 - a[0] a[1] a[-1] 처럼 저번에 String에서 배웠던 것처럼 인덱싱을 할 수 있습니다. a 리스트는 0번 인덱스에 1값을 가지고 있기 때문에 a[0]에 따라 1값을 출력합니다. 그리고 저번에 -1은 맨 끝 값을 의미한다고 했습니다. 그렇기 때문에 a[-1]은 a리스트의 마지막 원소인 4를 출력합니다.

 

 - 리스트 슬라이싱의 경우도 스트링과 비슷합니다. 리스트 또한 스트링 처럼 슬라이싱하라고 명령을 할 수 있는데 이 경우에는 a 리스트의 0에서 2를 자르라고 명령 을 하였습니다. 따라서 0인덱스 부터 2인덱스 바로 이전인 1인덱스까지인 [1, 2]를 출력해 줍니다.

 

2. 주요 리스트 함수.

 

 

자주 쓰는 메서드 및 함수들에 대해서 살펴보도록 하겠습니다.

 

2.1 Append / Extend

 

 두 메서드 둘 다 리스트에 원소를 추가하는 메서드입니다. 언뜻 보면 똑같아 보입니다. a에 원소 하나를 append 했더니 1,2,3,4,5가 되었다.

 그 다음에 [1,2,3,4,5] 리스트 안에 리스트를 더 추가하고 싶어서 extend를 써 봤습니다. append는 앞에서 그냥 원소가 추가 되었으니까. 그럼 그냥 append로 추가 해 봤습니다. 그랬더니 list가 들어갔습니다.

 

그러면 extend는 대체 하는 일이 뭘까요? 위에서 보시다시피 리스트를 리스트의 엘레멘트들로 추가 하는 역할을 합니다. append(1)은 에러가 나지 않지만 extend(1)은 에러가 납니다. extend는 에러가 나기 때문입니다. 두 메서드의 차이점을 아시고 사용하시기 바랍니다.

 

2.2 Clear

3.5 버전인가 3.3 이후에 추가된 메서드로, 특정 리스트를 모두 제거하는 함수입니다. 기존에는 del메서드를 사용해서 del a[:] (주 : 는 전체를 슬라이싱 하므로, 리스트의 전체를 의미함) a리스트의 전체를 삭제 하였습니다. 하지만 이제는 clear함수를 사용 할 수 있게 되어서 a,clear() 처럼 사용하면 리스트를 모두 비울 수 있게 되었습니다. 따라서 주기적으로 리스트를 삭제 하거나 메모리에서 비울 필요가 있으면 clear()를 사용 해서 편하게 사용 할 수 있게 되었습니다.  

 

 

 

3. pop

리스트의 가장 기본은 위의 1,2번으로 끝입니다. 노가다 코딩으로 (ㅎㅎ) 할 수 있지만 좀 더 효율적인 코딩을 위해서 상황에 맞게 Numpy를 사용하고 파이썬만을 사용한다면 다른 메서드들을 사용하는 것입니다. 귀찮으신 분들은 위에 1,2,번 까지만 보세요. 아래는 좀 덜 중요한 함수입니다. 하지만 그래도 그렇게 수준급이 아닌 제가 많이 사용하는 함수이니 익혀 두시는 것도 좋을 듯 합니다.

 

pop은 자료구조를 좀 배워 보신 분은 아시겠지만 pop구조라는 것을 아시는 분도 있이실 겁니다. 뒤에서부터 뺴내는 거죠.

 

 

 

위와 같은 방식으로 말입니다. 그래서 기본적으로 a.pop()이렇게 써 놓으면 리스트의 맨 뒤에서부터 한 번 출력한 다음에 빼내지만 괄호안에 인덱스를 써주면 인덱스에 있는 리스트 값을 출력하고 빼냅니다. 그래서 위와 같이 실제 코딩 할 때 print (a.pop()) 처럼 사용 할 수 있습니다.  그러면 리스트의 뒤에서 값이 하나씩 출력되면서 값이 하나씩 빠져 나오는 코드가 생성됩니다.  아직 배우진 않았지만 반복문이랑 같이 사용해보면 다음과 같이 쓰여지겠죠.

 

for i in range(0, 10):

print(a.pop())

 

4. insert/count

 

 append나 extend는 뒤에만 값을 붙여 넣을 수 있었지만 insert의 경우에는 인덱스를 정해서 값을 집어 넣을 수 있습니다. 위에서는 값만 집어 넣지만 a.insert(0,[1,2,3])처럼 리스트를 집어 넣을 수도 있습니다. 하지만 특별한 경우가 아니면 인덱스까지 굳이 찾아서 프로그래밍을 하지 않기 때문에 계속 사용하지는 않죠 ㅎㅎ append나 아니면 미리 리스트의 형태를 만들어서 대입을 해주는 경우가 많습니다. 그래도 알아둬서 나쁠 건 없는 메서드 입니다. 필요 할 경우가 분명히 있긴 있거든요.

 

count는 리스트 내부의 값을 세는 메서드 입니다. 저도 실제로 그렇게 사용해 봤습니다. 하지만 별도로 용도가 있는 지는 모르겠군요.

 

 

 

 

 

 

 

 

 

이제 마지막으로 Dictionary만 하면 대략적인 자료형은 끝이 나는군요 ㅎㅎ 자료형이 끝나면 제어문으로 바로 넘어가면 되겠습니다!

 

'머신러닝 > 기초 문법' 카테고리의 다른 글

5. 딕셔너리 심화 - (2)  (0) 2019.01.30
5. 딕셔너리 기초 - (1)  (0) 2019.01.29
3. String -(2) : string 함수  (0) 2019.01.24
3. String - (1)  (0) 2019.01.22
2. 간단한 숫자 자료형과 해당 형식 지정자  (0) 2019.01.20

+ Recent posts