파이썬 리스트: 파이썬(Python)에서 다른 언어의 배열과 동등한 데이터 구조는 리스트(목록)로 구현되어 있습니다. 이번에는 리스트(목록)의 사용법을 예제를 위주로 정리해 봤습니다.
목록 초기화
# 리스트 (배열) 초기화 : 대괄호 "[]"로 묶고 요소를 쉼표 ","로 구분하여 배열
empty_list = [] # 빈 목록
print (empty_list) # []
int_list = [ 0 , 1 , 2 ] # 정수 목록 (정수 배열)
print (int_list) # [0, 1, 2]
mylist = [ 0 , 'abc' , 1 , 'def' ] # 목록 (배열)에는 모든 유형의 요소를 포함 할
print (mylist) # [0, 'abc', 1, 'def']
# 목록 (배열) 초기화 : list 함수를 호출
int_list = list () # 빈리스트 (배열)
print (int_list) # []
int_list = list (( 4 ,5 , 6 )) # 튜플의 요소를 바탕으로 목록 (배열)가 만들어지는
print (int_list) # [4, 5, 6]
int_list = list (range ( 5 )) # range 개체에서 정수 목록 (정수 배열 )을 작성
print (int_list) # [0, 1, 2, 3, 4]
str_list = list ( 'python' ) # 문자열의 각 문자를 요소로하는 목록을 작성
print (str_list) # [ 'p', 'y', 't', 'h', 'o', 'n']
# 목록 내포 표기
int_list = [x for x in range ( 0 , 10 , 2 ) # range 개체에서 목록을 작성
print (int_list ) # [0, 2, 4, 6, 8]
int_list = [x for x in range ( 10 ) if x % 2 == 1 ] # if 절을 사용 예
print (int_list) # [1, 3, 5, 7, 9]
# if else 식을 사용할 때는 for 절 계속 않고 내포 표기 앞부분에
str_list = [c.upper () if c.islower () else c.lower () for c in 'AbCdE' ]
print (str_list) # [ 'a', ' B ','c ','D ','e ']
# 목록 목록 (배열의 배열)
mylist = [ 0 , 1 , 2 , 3 , 4 ,5 ]] # 2 차원 목록 (배열)의 작성
print (mylist) # [[0, 1, 2, 3, 4, 5]
mul_tbl = [x * y for x in range ( 1 , 4 ) for y in range ( 1 , 5 )
print (mul_tbl) # [[1, 2, 3, 2, 4, 6, 3, 6, 9, 4, 8, 12]
리스트의 요소에 액세스하기 (인덱스)
mylist = list (range ( 10 ))
print (mylist) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 인덱스 액세스
n = mylist [ 1 ] # 양수는 선두 에서의 인덱스. 첫 번째 요소의 인덱스가 0
print (n) # 1
n = mylist [- 2 ] # 음수는 끝에서의 인덱스. 마지막 요소의 인덱스가 -1
print (n) # 8
# 인덱스를 사용한 요소의 제거
del mylist [ 4 ]
print (mylist) # [0, 1, 2, 3, 5, 6, 7, 8, 9 ]
# 인덱스를 사용하여 요소를 변경
mylist [- 1 ] = 90
print (mylist) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 90]
리스트의 요소에 액세스 (슬라이스)
# 슬라이스 액세스
mylist = list (range ( 10 ))
s = mylist [ 0 : 5 ] # 0 ~ 4 번째의 5 요소를 꺼낼
print (s) # [0, 1, 2, 3, 4]
s = mylist [:] # 모든 요소를 꺼낼
print (s) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
s = mylist [ 5 :] # 5 번째 이후의 모든 요소를 추출
print (s) # [5, 6, 7, 8, 9]
s = mylist [: 5 ] # 0 ~ 4 번째의 5 요소를 꺼낼
print (s) # [0, 1, 2, 3, 4]
s = mylist [ 0 : 10 : 2 ] # 0,2,4,6,8 번째 요소를 추출
print (s) # [0, 2, 4, 6, 8]
s = mylist [: 2 ] # 동감
print (s) # [0, 2, 4, 6, 8]
s = mylist [- 4 :] # -4 번째부터 끝까지 모든 요소를 꺼낼
print (s) # [6, 7, 8, 9]
s = mylist [- 1 : - 9 : - 1 ] # 목록 끝에서 역순으로 요소를 추출
print ( s) # [9, 8, 7, 6, 5, 4, 3, 2]
# 슬라이스 의한 요소의 제거
mylist = list (range ( 10 ))
del mylist [ 3 : 5 ] # 세 번째와 네 번째 요소 삭제
print (mylist) # [0, 1, 2, 5, 6, 7, 8, 9]
del mylist [ 0 : 2 ] #에서 삭제 결과에서 0,2,4,6 번째 요소를 제거
print (mylist) # [1, 5, 7, 9]
mylist [ 0 : 2 ] = [] #에서 삭제 결과에서 처음 두 요소를 제거
print (mylist) # [7, 9]
# 슬라이스로 요소를 변경
mylist = list (range ( 10 ))
mylist [ 1 : 3 ] = [ 10 , 20 ] # 슬라이스의 시작과 끝을 지정하는 요소를 변경
print (mylist) # [0, 10, 20, 3, 4, 5 6, 7, 8, 9]
mylist [ 1 : 3 ] = [1 , 1.5 , 2 ] #이 경우 슬라이스과 새로운 값의 요소 수가 달라도 OK
print (mylist) # [0, 1, 1.5, 2, 3, 4, 5, 6, 7, 8, 9]
mylist = list (range ( 10 ))
mylist [ 1 : 2 ] = [ 10 , 30 , 50 , 70 , 90 ] # 시작 / 끝 / 증분을 지정하여 요소를 변경
print (mylist) # [0, 10 2, 30, 4, 50, 6, 70, 8, 90]
mylist [ 0 : 2 ] = [ 0.0 , 2.0 , 4.0 ] # ValueError :이 경우에는 같은 수의 원소 않으면 안
목록에 요소를 추가 (+ 연산자 / + = 연산자)
mylist = list (range ( 5 ))
print (mylist) # [0, 1, 2, 3, 4]
# + 연산자를 사용하여 목록의 결합 (리스트의 말미에 목록 추가)
tmp = mylist + 5 , 6 ] # + 연산자는 새 목록이 생성되는
print (tmp) # [0, 1, 2, 3, 4, 5, 6]
print (mylist) # [0, 1, 2, 3, 4]
mylist = mylist + 5 # TypeError : 목록 목록 이외 결합 할 수없는
mylist = mylist + ( 5 , 6 ) # TypeError : 목록 목록 이외 결합 할 수없는
# + = 연산자를 사용하여 목록 끝으로 요소의 추가
mylist + = 5 ] # + = 연산 (누적 대입)는 원래 목록이 변경 될
print (mylist) # [0, 1, 2, 3, 4, 5]
mylist + = 6 # TypeError : 목록에 누적 대입 할 수는 반복 가능 객체 만
mylist + = ( 6 , 7 ) # 목록 끝에 튜플의 개별 요소 추가
print (mylist) # [0, 1, 2, 3, 4, 5, 6, 7]
목록에 요소를 추가 (append / extend / insert 메소드)
mylist = list (range ( 5 ))
mylist.append ( 5 ) #리스트의 말미에 요소를 추가
print (mylist) # [0, 1, 2, 3, 4, 5]
mylist.append ( 6 , 7 ) # TypeError : append 메소드의 인수는 하나
mylist.append ( 6 , 7 ) #리스트의 말미에 단일 요소로 "목록"을 추가
print (mylist) # [0, 1, 2, 3, 4 5, 6, 7]
mylist.extend ( 8 , 9 ) #리스트의 말미에 반복 가능 객체의 개별 요소를 추가
print (mylist) # [0, 1, 2, 3, 4, 5 [6, 7, 8, 9]
mylist.extend ( 10 ) # TypeError : extend 메소드는 반복 가능 객체 만 전달할
mylist.extend ({ 10 : 'foo' , 11 : 'bar' }) # 반복 가능 객체이므로 OK
print (mylist) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
mylist.insert ( 1 , 0.5 ) # 지정된 인덱스에 요소를 삽입
print (mylist) # [0, 0.5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
목록에서 요소를 제거하기 (del 문장 인덱스 / 조각)
# 인덱스를 지정하고 del 문장에서 요소를 제거
mylist = list (range ( 5 )) # [0, 1, 2, 3, 4]
del mylist [ 0 ]
print (mylist) # [1, 2, 3, 4]
# 슬라이스를 지정하고 del 문장에서 요소를 제거
mylist = list (range ( 5 )) # [0, 1, 2, 3, 4]
del mylist [ 1 : 4 ] # 1 ~ 3 번째의 요소를 삭제
print (mylist) # [0 4]
mylist = list (range ( 5 )) # [0, 1, 2, 3, 4]
del mylist [: 2 ] # 0,2,4 번째 요소를 제거
print (mylist) # [1, 3]
mylist = list (range (10 )) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del mylist [ 1 : 7 : 3 ] # 1 번째와 네 번째 요소를 제거
print (mylist) # [ 0, 2, 3, 5, 6, 7, 8, 9]
# 슬라이스에서 지정한 범위에 빈 목록을 대입하여 삭제
mylist = list (range ( 10 )) # [0, 1, 2, 3 4, 5, 6, 7, 8, 9]
mylist [ 4 : 8 ] = [] # 4-7 번째 요소를 제거
print (mylist) # [0, 1, 2, 3, 8, 9]
print ( 'mylist [:] :' , mylist [:]) # mylist [:] : [0, 1, 2, 3, 8, 9]
mylist [:] = [] # 목록의 모든 요소를 삭제
print(mylist) # []
mylist = list (range ( 5 ))
del mylist [:] # 이렇게도 쓸 수 있음
목록에서 요소를 제거 (clear / pop / remove 메소드 목록 내포 표기)
# clear 메소드 목록의 모든 요소를 삭제
mylist = list (range ( 10 )) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print (mylist) # [0, 1 2, 3, 4, 5, 6, 7, 8, 9]
mylist.clear ()
print (mylist) # []
# pop 메소드에서 지정한 인덱스에있는 요소를 목록에서 삭제하여 해당 값을 검색
mylist = list (range ( 10 ))
value = mylist.pop () # 인덱스를 지정하지 않으면 마지막 요소가 제거
print ( 'popped value :' , value) # popped value : 9
print ( 'mylist : ' , mylist) # mylist : 0, 1, 2, 3, 4, 5, 6, 7, 8]
value = mylist.pop ( 5 ) # 5 번째 요소를 제거
print( 'popped value :' , value) # popped value : 5
print ( 'mylist :' , mylist) # mylist : 0, 1, 2, 3, 4, 6, 7, 8]
# remove 메소드에서 삭제할 값 를 지정하여 목록에서 값을 삭제
mylist = [ 2 , 0 , 6 , 0 , 5 , 7 , 2 , 1 , 5 , 5 ]
mylist.remove ( 0 ) #리스트 내의 요소 0 중 선두에 있는 것을 삭제
print (mylist) # [2, 6, 0, 5, 7, 2, 1, 5, 5]
mylist.remove ( 0 ) #리스트 내의 요소 0 중 선두에있는 것을 삭제
print (mylist) # [2, 6, 5, 7, 2, 1, 5, 5]
mylist.remove ( 0 ) # ValueError : 지정한 값이 목록에 없으면 예외
# 목록에서 특정 조건에 일치하는 것을 정리해 삭제
mylist = [ 2 , 0 , 6 , 0 , 5 , 7 , 2 , 1 , 5 , 5 ]
target = 0 # 0 요소를 mylist에서 없애
mylist = [item for item in mylist if item! = target] # 제거 = 그렇지 남기기
print (mylist) # [2, 6, 5, 7, 2, 1, 5, 5]
목록에서 요소를 검색하는 (in / not in 연산자 count / index 메소드 min / max 함수)
mylist = [ 2 , 5 , 11 , 15 , 1 , 3 , 18 , 3 , 19 , 8 ] # 10 개의 정수 값을 요소로하는 목록
# 지정된 값이 목록에 포함되어 있는지 포함되어 있지 않은지 검사
result = 0 in mylist # 정수 값 0이 mylist에 포함되어 있는지를 확인
print (result) # False
result = 0 not in mylist # 정수 값 0이 mylist에 포함 여부를 검사
print (result) # True
# 지정된 값이 목록에 몇 개 포함되어 있는지를 확인
cnt = mylist.count ( 3 ) # 정수 값 3이 mylist에 몇 개 포함되어 있는지를 확인
print (cnt) # 2
# 지정된 값이 어떤 인덱스에 있는지를 검색
idx = mylist.index ( 3 ) # mylist에 포함 된 정수 3 최소의 인덱스를 요구
print (idx) # 5
idx = mylist.index ( 3 , 6 , len (mylist)) # 검색 범위를 지정
print (idx) # 7
idx = mylist.index ( 100 ) # ValueError : 존재하지 않는 값을 지정
#리스트의 요소로 최대 / 최소의 것을 추구
max_value = max (mylist) # 최대 값을 구하는
print (max_value) # 19
min_value = min (mylist) # 최소 요구
print (min_value) # 1
max_value = max ([]) # ValueError : max 함수 / min 함수에 빈 목록을 전달하면 예외
max_value = max ([], default = 'none' ) # defalut 인수는 빈리스트를 건네 주었을 때에 반환
print (max_value) # none
max_value = max ( 0 , 1 , 4 , 5 , 2 , 3 ]) # 여러 목록 중 최대의 목록을 획득
print (max_value) # [4,5]
mylist = [ 'pYthon' , 'pyThon' , 'Python' , 'PYTHON' ]
max_value = max (mylist, key = str.lower) # key 인수를 지정하는 예
print (max_value) # pYthon
목록의 요소를 정렬 / 정렬 (sort / reverse 메소드 sorted / reversed 함수)
#리스트의 요소를 정렬 (in-place)
mylist = [ 18 , 0 , 16 , 6 , 15 , 7 , 9 , 1 , 2 , 5 ]
mylist.sort ()
print (mylist) # [0, 1, 2 5, 6, 7, 9, 15, 16, 18]
# 목록의 요소를 정렬 한 새로운 목록을 생성
mylist = [ 18 , 0 , 16 , 6 , 15 , 7 , 9 , 1 , 2 , 5 ]
newlist = sorted (mylist)
print ( 'mylist :' , mylist) # mylist : 18, 0, 16, 6, 15, 7, 9, 1, 2, 5]
print ( 'newlist :' , newlist) # newlist : 0, 1, 2, 5, 6, 7, 9, 15, 16, 18]
# 목록의 요소를 정렬 (in-place / 역순)
mylist = [ 18 , 0 , 16 , 6 , 15 , 7 , 9 , 1 , 2 , 5 ]
mylist.sort (reverse = True )
print (mylist) # [18, 16, 15, 9, 7, 6, 5, 2, 1, 0]
# 정렬에 사용하는 키를 결정하는 함수를 지정
mylist = [- 1.7, 0.1 , 4.5 - 1.5 - 4.6 ]
mylist.sort (key = abs) # 절대 값 순으로 정렬
print (mylist) # [0.1, -1.5, -1.7, 4.5, -4.6]
# 람다 식을 사용하여 목록 목록 정렬
mylist = [ 0 , 1 , 2 , 1 , 2 , 0 , 2 , 0 , 1 ]
mylist.sort (key = lambda x : x [ 1 ]) # 1 번째 요소를 키로 목록을 정렬
print (mylist) # [2, 0, 1, 0, 1, 2, 1, 2, 0]
# key 키워드 인수와 reverse 키워드 인수를 사용
mylist = - 1.7 , 0.1 , 4.5 - 1.5 - 4.6 ]
mylist.sort (key = abs, reverse = True ) # 절대 값을 기준으로 내림차순으로 정렬
print (mylist ) # [-4.6, 4.5, -1.7, -1.5, 0.1]
# 요소를 역순으로 정렬 (in-place)
mylist = list (range ( 5 )) # [0, 1, 2, 3, 4]
mylist. reverse ()
print (mylist) # [4, 3, 2, 1, 0]
# 요소를 역순으로 정렬 된 새로운 반복자를 생성
mylist = list (range ( 5 )) # [0, 1, 2, 3 4]
iterator = reversed (mylist) # reversed 함수의 반환 값은 반복자
print (iterator) # <list_reverseiterator object at ...>
newlist = list (iterator) # 반복기에서 목록을 작성
print ( 'mylist :' , mylist) # mylist : 0, 1, 2, 3, 4]
print ( 'newlist :' , newlist) # newlist : 4, 3, 2, 1, 0]