728x90
파이썬 리스트의 특징
- 가변적
- 다양한 타입 포함가능
- 순차적 접근 (순서나 내용이 바뀔 때 유용)
- 동일한 값 중복해서 넣을 수 있음
이하 사용할 예제는 다음과 같음
>>> mylist = [‘a’,’b’,’c’,’w’,’d’,’e’,’f’,’g’,’h’,’i’,’w’] >>> mytuple = (‘x’,’y’,’z’)
리스트의 생성
>>> mylist = [] >>> mylist = list( )
리스트로의 변환
>>> list(‘word’) ['w', 'o', 'r', 'd'] >>> text = ‘We strongly encourage maintainers of third-party Python projects to test with 3.8 during the beta phase and report issues found to the Python bug tracker as soon as possible.’ >>> text.split() ['We', 'strongly', 'encourage', 'maintainers', 'of', 'third-party', 'Python', 'projects', 'to', 'test', 'with', '3.8', 'during', 'the', 'beta', 'phase', 'and', 'report', 'issues', 'found', 'to', 'the', 'Python', 'bug', 'tracker', 'as', 'soon', 'as', 'possible.'] >>> mylist2 = list(mytuple) >>> mylist2 ['x', 'y', 'z'] # join() 을 이용하여 문자열로 변환, split()의 반대기능 수행 >>> ', '.join(mylist) 'a, b, c, w, d, e, f, g, h, i, w' >>> separator = ' * ' >>> joined = separator.join(mylist) >>> joined 'a * b * c * w * d * e * f * g * h * i * w' >>> separated = joined.split(separator) >>> separated ['a', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w']
리스트 슬라이싱
# 슬라이스 역시 리스트 # 기본형식은 다음과 같음. start 포함해서 stop 직전까지 step 별로 생성 >>> mylist[start:stop:step] # start 부터 stop-1 까지 >>> mylist[start:stop] >>> mylist[1:3] ['b', 'c'] # start 부터 나머지 전부 >>> mylist[start:] >>> mylist[1:] ['b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] # 처음부터 stop-1 까지 >>> mylist[:stop] >>> mylist[:4] ['a', 'b', 'c', 'w'] # 전체 복사 >>> mylist[:] ['a', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] # 음수 인덱스를 사용하면 뒤에서부터 시작점이 -1 # 아주 긴 리스트에서 리스트 말미에 있는 아이템을 추출할 때 용이함 # 리스트내 아이템 전체를 반전해서 보여줌, step=-1 >>> mylist[::-1] ['w', 'i', 'h', 'g', 'f', 'e', 'd', 'w', 'c', 'b', 'a'] >>> mylist[1:-1] ['b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i'] # 반전된 첫 2개 아이템 >>> mylist[1::-1] ['b', 'a'] # 반전된 마지막 2개 아이템 >>> mylist[:-3:-1] ['w', 'i'] # 마지막 아이템 2개를 제외한 반전된 리스트 >>> mylist[-3::-1] ['h', 'g', 'f', 'e', 'd', 'w', 'c', 'b', 'a']
리스트의 복사
# 리스트를 독립적으로 복사하는 3가지 방법. copy_a 리스트 아이템의 값을 변경하는 것은 copy_b 나 copy_c 에는 변경을 끼치지 않는다. • 리스트 copy() 함수 >>> copy_a = mylist.copy() • list() 변환함수 >>> copy_b = list(mylist) • 리스트 슬라이스 [:] >>> copy_c = mylist[:]
리스트의 정렬
# sorted() 를 통해 리스트내 아이템을 정렬한 복사본을 만들 수 있음 # 문자열인 경우 알파벳 순으로, 숫자인 경우 오름차순으로 정렬됨 # 복사본이므로 mylist 에는 영향을 주지못함 >>> sorted_mylist = sorted(mylist) >>> sorted_mylist ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'w', 'w'] # 하지만 list 함수인 sort() 는 리스트 자체를 변경한다 >>> mylist.sort() >>> mylist ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'w', 'w'] # 아이템이 서로 다른 타입인 경우에는 다른 형태로 자동 변환됨 >>> mylist_mixed2 = [1,3,0.5,999] >>> mylist_mixed2.sort() >>> mylist_mixed2 [0.5, 1, 3, 999] # 기본값은 오름차순이지만 내림차순으로도 정렬 가능 >>> mylist.sort(reverse=True) >>> mylist ['w', 'w', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
리스트의 참조
# = 를 통해 리스트에 하나 이상의 변수를 할당하는 경우에는 아이템의 값이 변경되는 이를 참조하는 변수 리스트도 변경된다. >>> mylist_x = mylist >>> mylist_x ['a', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] >>> mylist[0] = ‘www' >>> mylist ['www', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] >>> mylist_x ['www', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] mylist_x 는 같은 리스트 객체 mylist 를 참조할 뿐이다. 따라서 리스트 컨텐츠의 변경은 양쪽 모두에 반영된다.
리스트 비교
>>> copy_a == copy_b True
리스트 병합
>>> mylist.extend(mylist2) ['a', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w', 'x', 'y', 'z'] >>> mylist += mylist2 ['a', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w', 'x', 'y', 'z']
리스트내 아이템에 대한 접근
# offset 으로 하나의 항목을 추출 >>> mylist[2] ‘c’ # 음수의 인덱스는 뒤에서부터 추출함 >>> mylist[-1] ‘z’ # 범위를 벗어나는 경우 IndexError 발생 >>> mylist[10] IndexError: list index out of range and python # 복수 인데스로 리스트에 포함된 리스트의 아이템 접근가능 >>> mylist[2] = mylist2 >>> mylist ['a', 'b', ['x', 'y', 'z'], 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] >>> mylist[1][0] 'y'
리스트내 아이템 변경
# offset 으로 항목바꾸기. 가져와서 바꾼다 >>> mylist[1] = ‘z’ >>> mylist[1] ‘z’
리스트내 아이템 추가
# 맨뒤에 추가 >>> mylist.append(‘p’) >>> mylist ['a', 'b', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w',’p’] # 원하는 위치에 추가 >>> mylist.insert(4,’c’) >>> mylist ['a', 'b', 'c', 'w', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'w']
리스트내 아이템 삭제
# offset 으로 항목 삭제 >>> del mylist[2] >>> mylist ['a', 'b', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] >>> mylist[3].del() # del 은 리스트 메소드가 아닌 구문임. SyntaxError: invalid syntax # 값으로 항목삭제, 위치를 모르는 경우 >>> mylist.remove(‘b’) >>> mylist ['a', 'c', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'w'] # 아이템 가져오면서 동시에 삭제 # pop(0) 리스트의 head (start) 반환 >>> mylist.pop(0) ‘a’ # pop() 이나 pop(-1) 은 리스트의 tail (end) 반환 >>> mylist.pop() ‘w’ >>> mylist.pop(1) ‘w’
리스트내 아이템 찾기
# 값으로 offset 찾기 >>> mylist.index('c') 2 # 리스트에 해당값이 존재하는지 확인하기 >>> ‘d’ in mylist True # 해당값이 여러번 등장하는 경우 >>> ‘w’ in mylist True # 등장횟수 카운팅 >>> mylist.count(‘w’) 2 # 리스트내 아이템 갯수 반환 >>> len(mylist) 11 # 최대, 최소값 찾기 >>> min(mylist) ‘a’ >>> max(mylist) ‘w’
728x90
'프로그래밍 Programming' 카테고리의 다른 글
오픈소스 컴퓨터 비전 라이브러리 cvlib 설치 (0) | 2019.09.24 |
---|---|
우분투에 opencv-python 설치하기 Install OpenCV-Python in Ubuntu 18.04 (0) | 2019.09.24 |
Dynalist - best outlining app for your best work Help center 소개 (0) | 2019.08.03 |
아나콘다 환경에서 주피터 노트북 ModuleNotFoundError: No module named 'ccxt' (1) | 2019.06.21 |
오라클 SQL 자주 쓰이는 숫자 관련 함수 ROUND (0) | 2019.06.17 |
댓글을 사용할 수 없습니다.