본문 바로가기

Programming/Python

파이썬의 자료 구조 , 리스트

자료 구조란  간단하게 어떤 자료를 담는 구조를 말한다.        다른말로 하면 , 서로 연관되어 있는 어떤 자료들의 집합을 저장하는데 사용된다.

파이썬에는 4가지 종류의 자료 구조가 있는데 , 각각 리스트 , 튜플 , 딕셔너리 , 집합이다.

이제 앞으로 각각의 사용법에 대해 알아보고 또 얼마나 편리한지 확인해보자


리스트

리스트란 순서대로 정리된 항목을 담고 있는 자료 구조이다.    즉 , 리스트에는 항목의 목록을 저장할 수 있다.

쉽게 말하면 장 보러 갈때 적는 일종의 장바구니 목록같은 것이다.    
아마도 대부분은 각 품목들을 한줄 한줄 적겠지만 파이썬에서는 쉼표( , )로 각 항목을 구분한다.


리스트를 정의할떄는 대괄호 [ ] 를 이용하여 파이썬에게 이것이 리스트를 의미한다는걸 알려준다.
한번 리스트를 만들어 두면 여기에 새로운 항목을 추가하거나 삭제할 수 있으며 , 특정 항목이 존재하는지 검색할 수도 있다.
이때 항목을 추가 및 삭제가 가능하다는 것을 비정적(Mutable)이라고 하며 , 리스트는 비정적 자료구조로 내부 항목을 변경할 수 있다.



객체와 클래스에 대한 소개

객체와 클래스에 대해서는 좀 더 나중에 정리할 것이지만 , 여기서 우리가 리스트에 대해 좀 더 잘 이해할수있도록 간단히 정리하자.
리스트는 객체와 클래스가 사용된 한 예시다,    변수 i 를 선언하고 예를들어 5라는 값을 할당해 주는것은 int 라는 클래스(또는 타입)의 객체(인스턴스) i 를 만드는 것이다.


클래스는 메소드를 가질수 있는데 여기서 메소드그 클래스 내에 정의된 고유의 내장함수들을 말한다.

또 이러한 내장함수들은 클래스로 객체를 생성했을 때에야 비로소 사용이 가능하다.
예를들어 , 파이썬은 list 클래스 append라는 메소드를 제공하며 이는 리스트의 마지막에 항목을 한 개 추가할때 사용되는 메소드이다. 

즉 mylist.append('an item')라 하면 , mylist의 마지막에 해당 문자열(an item)을 추가해준다.
이때 객체의 메소드에 접근할 때에도 . 을 이용한다는 점을 기억하자.


또 클래스는 필드를 가질수 있는데 이것은 단순히 그 클래스 내에 정의된 변수들을 의미한다.
메소드와 마찬가지로 이러한 변수들은 클래스로 객체를 생성했을 때에야 비로소 사용이 가능하다.



shoplist = ['apple','mango','carrot','banana']

print("I have",len(shoplist),"items to purchase.")
print("These items are:")
for item in shoplist:
print(item)

print("\nI also have to buy rice.")
shoplist.append('rice')
print("My Shopping list is now",shoplist)

print("I will Sort my list now")
shoplist.sort()
print("Sorted shopping list is",shoplist)

print("The first item I will buy is",shoplist[0])
olditem = shoplist[0]
del shoplist[0]
print("I bought the",olditem)
print("My shopping list is now",shoplist)

우리가 장을 보러 갈때 장바구니 목록을 변수 shoplist에 담아두었다고 하자.
shoplist에는 , 구매할 항목들의 이름 '문자열'들만 담겨있지만 사실 리스트에는 어떤 종류의 객체(숫자형,불린형..etc)든지 담을수 있으며 심지어는 리스트안에 리스트를 담을수도 있다. 


여기서는 for..in반복문을 사용하여 리스트안에 담겨 있는 항목들을 하나씩 반복하여 읽어왔다.
지금쯤 여러분은 리스트가 하나의 열거 형식에 예가 됨을 알게 됬을 것이다.
열거 형식의 특수성에 대해서는 추후에 다루겠다.

중간에 리스트 객체의 append 메소드를 이용하여 리스트에 항목을 한개 추가한다.
그리고 추가된 항목이 제대로 추가되었는지 확인하기 위해 print문에 리스트를 넘겨주어 리스트의 내용을 출력한다.

이제 리스트의 sort 메소드를 이용하여 리스트의 내용을 정렬한다.    여기서 이 메소드는 해당 리스트 자체를 변화시키며 수정된 리스트를 또 반환해주지 않는데 이점을 이해하는것이 중요하다.
즉 정적인 문자열과 달리 리스트는 변화될 수 있는 성질(Mutable)을 지녔으며 이것을 비정적이라고 한다.

다음으로 시장에서 물건을 구매하면 이제 장바구니 목록에서 해당 목록을 지워야 한다.
이때 del함수를 이용하여 항목을 삭제한다.    여기서는 del shoplist[0]이라고 입력하여 첫번째 항목을 삭제했다.

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

사전  (0) 2017.11.11
튜플  (0) 2017.11.11
모듈  (0) 2017.11.11
함수  (0) 2017.11.11
흐름 제어  (0) 2017.11.11