반응형
+ 리스트 / 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 |