반응형



+ 리스트  /  List

[]를 사용한다.   순서가 있는 자료. 아무타입이나 복수타입들도 지원.
odd=[1,3,5,7,9]
리스트 내에 또 리스트를 쓸 수 도 있다.

string은 immutable이지만 list는 mutable이다.
! 리스트도 +를 사용하면 합쳐진다. *를 사용하면 반복됨.

lst=[1,2,5,'a','b']
lst=['a', 4.12, 'abb', ['a','b','c']]


a=[1,2]
a+[3,4]     => [1,2,3,4]
a*3     => [1,2,1,2,1,2]
인덱스는 0부터 시작
a[:] = []          # 리스트 클리어


다른 타입들도 원소로 갖을 수 있다.
array 처럼 사용한다.
append로 가장 마지막에 추가.
메모리 사용량은 많다.

list1=[...,...,..,...]
인덱스는 0부터시작
len(list1) => array count ; 원소 개수
list1.remove('...') ; 아이템을 찾아 삭제
list1.append('xxx') ; 추가
list1.sort()
del list1[1]

-리스트 조회
a[0:2] ; 인덱스 0~1까지 가져옴  ; 주의! 마지막 인덱스2는 포함되지 않는다! 
a[1:] ; 인덱스 1~
a[:3] ; 인덱스 0~2   
a[:-2] ;  a 전체에서 마지막 2개 제외.
인덱스 -1은 마지막 인덱스 번호를 의미함.


-리스트 내부 원소 개수
x = [[0, 0],[0,1], [1,0], [1,1]]
len(x)
4
len(x[0])
2

-리스트 차원을 알려면??? (팁)
x=[[1,2],[3,4]]
isinstance(x, list)
true
isinstance(x[0], list)
true
isinstance(x[0][0], list)
false
def test_dim(testlist, dim=0):
   if isinstance(testlist, list):
      if testlist == []:
          return dim
      dim = dim + 1
      dim = test_dim(testlist[0], dim)
      return dim
   else:
      if dim == 0:
          return -1
      else:
          return dim

-리스트 요소 삭제 방법
a=[1,'a','b','c',4]
a[1:3]=[]     => [1, 4]
또는 
del a[1:3]



-리스트 관리. 기타

a.append(4)     ; 뒤에 추가
a.insert(a,b) ; a 인덱스 위치에 b를 삽입.

a.remove(value) ; value를 찾아서 삭제한다. (처음에 발견된 하나만 삭제됨)
a.pop()  ; 가장 뒤에 노드를 하나 빼서 리턴한다.  pop(index)로 하면 해당 인덱스의 값을 뺀다.

a.count(value) ; value가 몇 개 들어있는지 개수
a.index(value) ; value가 몇 번째 인덱스가 존재하는지 검색.  (처음 발생한 지점)
    존재하지 않으면, ValueError exception

a.sort()     ; 리스트의 값들을 오름차순 정리함. 내림차순 정렬은 a.sort(reverse=True)
a.reverse() ; 리스트의 순서를 역순으로 조회.    ; a값 자체가 바뀐다! 주의!!!


+여러 개를 한 번에 추가시, extend.
nums=[1,2,3]
nums.extend([4,5,6])
nums
[1,2,3,4,5,6]

+리스트 위치 확인 index
lst.index('blue')     ; 처음 발견된 blue의 위치.
lst.index('blue',2)     ; 2번째로 발견된 blue의 위치.
lst.index('blue', 2, 4)      ; 인덱스2~4 범위내에서 검색.



+ 리스트 원소별 작업
a_list=[1,9,8,4]
a_list2 = [elem *2 for elem in a_list ]


+ 리스트 재구성, 필터링. ; 조건에 따라 선택.

cond = mat1[:,2]>5
cond = [True, False, True, False]
list_filter = [ i for i, c in zip(list1, cond) if c ]





------sample
a=[1,2,3,4]
while a:
     a.pop()
=> 4 3 2 1 출력
-변수 대입
a='aaa'
(a,b) = ('aaa','bb')
a=3
b=5
a,b = b,a     ; 두 변수의 값이 swap
b is a ==> true


-리스트 복사 주의사항!!
a=[1,2,3]
b=a
a[1]=4
b[1]=? 마찬가지로 변경되어 있음. (reference?)
b는 영향을 안 받고 싶으면 복사
b=a[:]     이렇게 복사해서 받아야 함.          주의!!!
또는
b = copy(a)
b is a => false



'Python' 카테고리의 다른 글

Python 강좌7 클래스  (0) 2018.03.27
Python 강좌6 tuple, set, dictionary  (0) 2018.03.21
Python 강좌4 정규식 regular expression  (0) 2018.03.19
Python 강좌3 자료형. 수/문자열  (1) 2018.03.16
Python 강좌2 if/for/while/function  (0) 2018.03.15

+ Recent posts