이미지 출처: https://wikidocs.net/192339
리스트 사용법
파이썬에서 리스트는 다양한 항목들을 순서대로 저장하는 데 사용됩니다. 리스트는 대괄호 [ ] 안에 쉼표로 구분된 값들을 포함하여 생성할 수 있으며 다른 언어의 배열과 유사하지만, 파이썬의 리스트는 서로 다른 타입의 데이터를 동시에 저장할 수 있습니다.🙄
a = [] b = list() c = [70, 75,80, 85] d = [1000, 10000, 'Ace', 'Base', 'Captine'] # 서로다른 자료형을 한 리스트 안에 담을 수 있다.(숫자,문자) e = [1000, 10000,['Ace', 'Base', 'Capine']] # 중첩 리스트로 리스트 안에 또 다른 리스트가 포함되어 있는 구조이다 f = [21.42, 'footnar', 3, 4, False, 3.141592]
리스트의 특정 위치에 있는 항목에 접근하거나 수정할 수 있게 해줍니다. 파이썬의 인덱싱은 0부터 시작합니다. 즉, 리스트의 첫 번째 항목은 인덱스 0에 있고, 두 번째 항목은 인덱스 1에 있습니다.
a = [] b = list() c = [70, 75,80, 85] d = [1000, 10000, 'Ace', 'Base', 'Captine'] e = [1000, 10000,['Ace', 'Base', 'Capine']] f = [21.42, 'footnar', 3, 4, False, 3.141592] print('d - ', type(d), d) >>> d - <class 'list'> [1000, 10000, 'Ace', 'Base', 'Captine'] print('d - ', d[1]) >>> d - 10000 # 리스트 d에서 두번째 위치에 있는 10000을 가져온다. print('d - ', d[0]+ d[1] + d[1]) # 1000+10000+10000 >>> d - 21000 print('d - ', d[-1]) # 리스트 d에서 가장 마지막에 위치해있는 값을 가져온다. >>> d - Captine print('e - ', e[-1][1]) # 중첩리스트에 있는 값을 가져오려면 인덱싱을 2번 사용하면 된다. 중첩된 리스트에서 2번째 값을 가져온다. e - Base print('e - ', list(e[-1][1])) # 리스트로 형변환, 문자열은 시퀀스 e - ['B', 'a', 's', 'e']
예전에 배웠던 문자열 슬라이싱과 같은 방식이다
a = [] b = list() c = [70, 75,80, 85] d = [1000, 10000, 'Ace', 'Base', 'Captine'] e = [1000, 10000,['Ace', 'Base', 'Capine']] print('d - ', d[0:3]) d - [1000, 10000, 'Ace'] print('d - ', d[2:]) d - ['Ace', 'Base', 'Captine'] print('e - ', e[-1][1:3]) e - ['Base', 'Capine'] print('Test + c[0]', 'Test' + str(c[0])) >>> Test + c[0] Test70
리스트도 더하기, 곱하기 같은 연산이 가능하다.
c = [70, 75, 80, 85] d = [1000, 10000, 'Ace', 'Base', 'Captine'] print('c + d', c+d) # 리스트안에 있는 값들을 모두 하나의 리스트로 합친다고 생각하자 >>> c + d [70, 75, 80, 85, 1000, 10000, 'Ace', 'Base', 'Captine'] print('c * 3', c*3) # 순서는 모두 유지, 리스트곱하기 정수형도 리스트로 출력 >>> c * 3 [70, 75, 80, 85, 70, 75, 80, 85, 70, 75, 80, 85]
c = [70, 75,80, 85] d = [1000, 10000, 'Ace', 'Base', 'Captine'] print(c == c[:3] + c[3:]) # [70, 75, 80] + [85] == c >>> True
c = [70, 75, 80, 85] temp = c print(temp, c) >>> [70, 75, 80, 85] [70, 75, 80, 85] print(id(temp)) # 둘다 같은 집주소를 보고있고, 어느한쪽이 변경되면 똑같은 결과값을 볼수있다. 파이썬은 효율성때문에 리스트 역시 하나의 주소값을 공유 >>> 2480851610752 print(id(c)) >>> 2480851610752
c = [70, 75,80, 85] c[0] = 4 print('c - ', c) >>> c - [4, 75, 80, 85] c[1:2] = ['a', 'b', 'c'] print('c - ', c) >>> c - [4, 'a', 'b', 'c', 80, 85] c[1] = ['a', 'b', 'c'] # 하나의 리스트 안에 또 리스트가 들어가 중첩되어 위의 슬라이싱과 결과값은 같지만 리스트가 중첩되있는 차이가 있다. print('c - ', c) >>> c - [4, ['a', 'b', 'c'], 'b', 'c', 80, 85] c[1:3] = [] # 삭제, 리스트안의 원소를 삭제할때 보통 이방법을 쓰지는 않고 밑에서 배운다. print('c - ', c) >>> c - [4, 'c', 80, 85]
리스트에 사용되는 여러가지 함수를 알아보자.
a = [5, 2, 3, 1, 4] a.append(10) # 끝에다가 데이터를 추가하거나 수정하고싶을때 append사용 >>> a - [5, 2, 3, 1, 4, 10] a.sort() # 오름차순으로 정렬 >>> a - [1, 2, 3, 4, 5, 10] a.reverse() # 반대로 위치구조를 바꿔서 출력 >>> a - [10, 5, 4, 3, 2, 1] print('a - ', a.index(3), a[3]) # 원소를 가져올때 index를 사용할 수 도잇다. >> a - 3 3 a.insert(2,7) # 2번째 위치에 7을 넣자 # 2번째 위치에 7이라는 값을 넣는다. 기존의 2번째 위치에 있는값대신 넣는건 아니다. >>> a - [10, 5, 7, 4, 3, 2, 1] del a[2] # 2번째 위치에 있는값인 7을 삭제한다. >>> a - [10, 5, 4, 3, 2, 1]
a = [5, 2, 3, 1, 4] a.remove(3) # remove는 del과 다르게 제거하고자 하는 값을 넣으면 제거된다. 데이터가 많을때 유용 >>> a - [5, 2, 1, 4] print('a - ', a.pop()) # 끝에있는 원소를 꺼내서 제거(가장 나중에 들어온것), 자료구조에서 문제를 풀때 많이 사용 >>> a - 4 print('a - ', a) >>> a - [5, 2, 1] print('a - ', a.count(2)) # a에 2의 갯수가 1개가 있다. 내가 원하는 값이 몇개가 있는지 찾을때, 또는 있는지 없는지,중복인지 count사용 >>> a - 1 ex = [8, 9] a.extend(ex) # 한 리스트의 끝에 다른 리스트의 모든 항목을 추가하는 데 사용됩니다. 기존의 리스트 a에 리스트ex를 붙인다. print('a - ', a) >>> a - [5, 2, 1, 8, 9]
반복문은 나중에 배우니까 아래와 같이 반복 문과 함께 사용될 수 있다는 것만 알아두자.
while a: data = a.pop() print(data) >>> 4 >>> 1 >>> 3 >>> 2 >>> 5
다음에는 튜플을 알아보자!😎