728x90

이번 시간에는 python 에서 가장 많이 사용하는 List 에 대해 배워보겠습니다.
python 강의를 진행하다보니 제일 와닿은 강의 방법은 간단한 이론 배경을 설명하고 되도록 여러가지 예를 보여주는 방법인 것 같습니다.

List 는 다양한 타입의 값들을 모아둔 것이라고 생각하시면 됩니다. 리스트는 순서있는 문자들의 모둠이라는 점에서 문자열과 비슷하지만 리스트의 원소는 어떤 유형도 될 수 있다는 점이 다릅니다.
이러한 각각의 값들을 원소(element)라고 부르고, 이러한 값들은 지표(Index)를 이용하여 접근할 수 있습니다.
List 를 표현할 때는 대괄호('[]')를 사용합니다.

다음의 예들과 주석들을 하나하나 잘 보시면 List 에 대한 이해를 쉽게 하실 수 있습니다.
아래의 예들은 제가 흐름을 가지고 테스트한 결과이니 쭈욱 흐름대로 보시면 이해하실 수 있습니다.


sh> python

>>> [1,2,3]               # list 를 사용할 때는 대괄호([] : square bracket)을 사용

[1, 2, 3]

>>> a = [1,2,3]          # 숫자 1,2,3 을 list element 로 등록

>>> a

[1, 2, 3]

>>> a = [1,2,'aaaa']   # 데이터형을 섞어서 list 에 넣을 수 있음.

>>> a

[1, 2, 'aaaa']

>>> a[0]                   # list 의 첫번째 element 를 리턴 - string 의 문자를 접근하는 방법과 동일

1

>>> a[1]                   # list 의 두번째 element 를 리턴

2

>>> a[:]                   # list 의 모든 element 를 리턴

[1, 2, 3]

>>> a[0] = 13            # list 의 첫번째 element 값을 변경

>>> a

[13, 2, 'aaa']


>>> a

[1, 2, 'aaaa']

>>> len(a)               # string 객체처럼 list 의 길이를 볼 수 있음.

3

>>> dir(a)                # list 객체인 a 의 symbol list 를 볼 수 있음.

['__add__', '__class__', '__contains__', '__delattr__', 

'__delitem__', '__delslice__', '__doc__', '__eq__', 

'__format__', '__ge__', '__getattribute__', '__getitem__', 

'__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', 

'__init__', '__iter__', '__le__', '__len__', '__lt__', 

'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', 

'__repr__', '__reversed__', '__rmul__', '__setattr__', 

'__setitem__', '__setslice__', '__sizeof__', '__str__', 

'__subclasshook__', 'append', 'count', 'extend', 'index', 

'insert', 'pop', 'remove', 'reverse', 'sort']

>>>

>>> [1,2,'aaa'] + [3,4]   # string 이나 다른 변수의 연산처럼 list 도 동일한 방식으로 연산 가능

[1, 2, 'aaa', 3, 4]

>>> a + [3,4]                # list 변수 a 와의 + 연산

[1, 2, 'aaaa', 3, 4]

>>> 

>>> help(a.count)         # list 객체 a 의 count 멤버함수를 사용하는 법을 document 로 확인

>>> a.count(3)             # 3 이라는 숫자가 a list 에 몇번 들어있나 확인

0

>>> a.count(2)             # 2 라는 숫자가 a list 에 몇번 들어있나 확인

1


>>> a = [1,2,3]

>>> b = a

>>> b                         # 복사를 하는 것이 아니고 단지 b 가 a 객체를 똑같이 가리키도록 (포인터)

[1, 2, 3]

>>> a[0] = 13              # a 의 첫번째 element 값을 변경하니

>>> a

[13, 2, 3]

>>> b                         # b 의 list 도 변경되어 있는 것을 볼 수 있음.

[13, 2, 3]

>>> b[0] = 77              # 마찬가지로 b 를 변경해도

>>> a                         # a 또한 변경되어 있음.

[77, 2, 3]

>>> b

[77, 2, 3]

>>> a = a + [4,5]         # list a 에 element 를 추가했을 때는 a 에는 적용이 되지만

>>> a

[77, 2, 3, 4, 5]

>>> b                         # b list 에는 보이지 않음을 주의 

[77, 2, 3]

>>> b = a                    # 다시 할당하면 다시 같아짐.

>>> b

[77, 2, 3, 4, 5]

>>> a

[77, 2, 3, 4, 5]


위처럼 b 가 a 를 가리키는 포인터가 아니라 완전히 별도의 list 로 분리 복제하고 싶을 때...

c++ 에서는 이렇게 사용하는 경우들에 있어서 메모리 해제에 대한 신경을 써줘야하지만,

python 은 gabage collector 가 알아서 정리해줍니다. 그냥 마구 사용하면 됩니다.


>>> a = [1,2,3]

>>> a[:]

[1, 2, 3]

>>> b = a[:]               # 이렇게 하면 b 영역을 따로 잡고 복제한다.

>>> b

[1, 2, 3]

>>> a[0] = 13              # a 의 element 를 변경해도

>>> a

[13, 2, 3]

>>> b                         # b 는 변하지 않는다.

[1, 2, 3]



>>> a == b                  # list 가 같은지 확인

True


list 의 element 를 하나씩 자동으로 접근하고 싶을 때는 for 구문을 사용합니다.


>>> a = [1,2,3]

>>> for num in a: print num  # num 변수에 a list 의 element 를 차례로 담아준다.

... 

1

2

3

>>> for num in a:          # 두줄로 나누어쓸 경우

...       print num

... 

1

2

3

 

출처 : http://cloudrain21.tistory.com/entry/파이썬python-리스트List-이해하고-활용하기-첫번째

728x90

'Python' 카테고리의 다른 글

python list sorting  (0) 2014.05.02
python list2  (0) 2014.05.02
python string  (0) 2014.05.02
python import, 들여쓰기  (0) 2014.05.02
python interpreter  (0) 2014.05.02

+ Recent posts