Chapter 2-1. 파이썬의 데이터 구조 : 리스트 list()
카테고리: Python-basic
태그: python Programming
인프런에 있는 남박사님의 강의 남박사의 파이썬 기초부터 실전 100% 활용 를 듣고 정리한 필기입니다. 😀
데이터 구조
- 자료형하고 비슷한데 자료형보다는 조금 더 덩어리를 다루는 개념입니다. 문자열이면 문자열 하나 이런식인데 그런 요소들이 합쳐진 개념으로 이해해야합니다.
C#에서 배열, list 같은 콜렉션을 의미합니다.
리스트 list()
list
는 어떤 자료형들의 연속적인 내용을 담는 것입니다.
a = [1,2,3,4,5,6]
print(a)
💎출력💎
[1, 2, 3, 4, 5, 6]
list
는 문자열이랑 비슷하게 방을 여러개 만들어서 하나씩 집어 넣었다고 생각하면 됩니다. 이게 숫자 뿐만 아니라 여러 자료형을 넣을 수 있습니다.
a = ["글자", 123, 123, 0]
print(a)
💎출력💎
['글자', 123, 123, 0]
- 또
list
안에list
를 넣을 수 있습니다. 더 고차원 리스트도 넣을 수 있지만 일반적인 인간(?)은 2차원 리스트까지만 이해하기 쉬우므로 3차원 이상의 리스트는 사용하지 않는 것이 좋습니다.프로그램이 복잡해지는게 다차원 리스트랑, 반복문 여러개 돌릴때 라고 생각함.
a = [[123,123], [1], [[123,123]]]
print(a)
💎출력💎
[[123, 123], [1], [[123, 123]]]
list
도 문자열 슬라이싱 한것과 같이 슬라이싱이 가능합니다. 단 슬라이싱 한 결과는list
로 반환이 됩니다. 즉,list
를 슬라이싱 하면 그 결과는 리스트다 라고 기억을 하셔야합니다.
a = [[123,123], [1], [[123,123]]]
print(a[0])
print(a[:2])
💎출력💎
[123, 123]
[[123, 123], [1]]
list
안에 요소를 검색 할 수도 있습니다.in
이라는 키워드를 사용하는데요.a=[1,2,3,4,5]
라는 list가 있는데 여기서1 in a
라고 표현하면, a안에 1이라는 요소가 있는지 없는지 검색을 해서 있다면True
로 반환되고 없다면False
로 반환됩니다.
a=[1,2,3,4,5]
print(1 in a)
print(6 in a)
💎출력💎
True
False
list
는 문자열과 비슷하게 동작해서 문자열+
같은 연산을 할 수 있습니다.a = "hello "
,b="world"
라는 두 문자열을+
로 합치면hello world
로 확장이 되는데요.list
에서도 동일하게 확장이 가능합니다.
a = "hello "
b = "world"
print(a+b)
c = [1,2,3]
d = [4,5,6]
print(c+d)
💎출력💎
hello world
[1, 2, 3, 4, 5, 6]
list()의 주요 메서드
list
는 데이터 구조로서list
안의 내용물을 추가, 삭제, 정렬 등을 할 수 있습니다.C#에서 list 콜렉션에서 했던 거 다 할 수 있습니다!! 오히려 더 간단하게!!
append() 리스트 추가
list
의 맨끝에 데이터를 추가할 때는append()
를 사용합니다.a=[1,2,3,4,5]
라는list
가 있는데 여기서 ‘6’이라는 요소를 추가하고 싶다면a.append(6)
이라고 표현하면 됩니다.
a=[1,2,3,4,5]
a.append(6)
print(a)
💎출력💎
[1, 2, 3, 4, 5, 6]
insert() 리스트 삽입
append()
는 맨 끝에만 데이터를 추가할 수 있는데insert()
는 추가되는 위치를 지정할 수 있습니다.a=[1,2,3,4,5]
라는list
가 있는데 여기서a[1]
위치에 ‘1.5’이라는 요소를 추가하고 싶다면a.insert(1,1.5)
이라고 표현하면 됩니다.
a=[1,2,3,4,5]
a.insert(1,1.5)
print(a)
💎출력💎
[1, 1.5, 2, 3, 4, 5]
del 인덱스 삭제
list()
의 메서드는 아니지만,del
이라는 키워드를 통해서 지정한 인덱스(위치값)의 요소를 삭제할 수 있습니다.a=[1,1.5,2,3,4,5]
라는list
가 있는데 여기서a[1]
위치에 ‘1.5’이라는 요소를 삭제하고 싶다면del a[1]
이라고 표현하면 됩니다.
a=[1,1.5,2,3,4,5]
del a[1]
print(a)
💎출력💎
[1, 2, 3, 4, 5]
remove(요소) 삭제
del
은 인덱스를 지정하여 요소를 삭제하였던것과 다르게remove()
는list
의 값을 찾아서 삭제하는 메서드입니다.a=[1,1.5,2,3,4,5]
라는list
가 있는데 여기서a[1]
위치에 ‘1.5’이라는 요소를 삭제하고 싶다면a.remove(1.5)
이라고 표현하면 됩니다.
a=[1,1.5,2,3,4,5]
a.remove(1.5)
print(a)
💎출력💎
[1, 2, 3, 4, 5]
pop(인덱스) 삭제 및 값 리턴
del
,remove()
는 인덱스 혹은 인자로 값을 삭제하는데 반해pop()
은 특이하게 삭제를 하고 삭제한 값을 리턴합니다.스택(Stack)이라는 자료구조의 pop()의 동작과 같습니다. 스택은 우리 일상생활에서 옷입는 동작과 유사합니다. 아무것도 입지 않은 상태에서 속옷을 입고, 겉옷을 입고, 잠바를 입는데요. 제 몸에는 속옷 + 겉옷 + 잠바 순으로 옷이 저장(?)되었습니다. 여기서 옷을 입는 행위를 push()라고 표현하고 옷을 벗는 행위를 pop()이라고 표현합니다. 옷을 벗으면 방바닥(?)에 옷이 떨어지죠?(전 정리를 잘 안합니다-_-;;) 즉 값을 리턴하게 되는것입니다. 표현이 이상했나요?^^;; list에서 pop은 스택에서의 pop에 인덱스 요소를 붙힌 형태입니다.
a=[1,1.5,2,3,4,5]
print(a.pop(1))
print(a)
💎출력💎
1.5
[1, 2, 3, 4, 5]
sort() 오름차순 정렬
- 요소가
[4,5,6,3,2,1]
이런식으로 정식없게 배치가 되어 있을 때 이것을sort()
라는 메서드를 통해서 정방향으로 정렬을 시켜줄 수 있습니다.
a=[4,5,6,3,2,1]
a.sort()
print(a)
💎출력💎
[1, 2, 3, 4, 5, 6]
reverse() 내림차순 정렬
sort()
가 오름차순 정렬을 하는것이라면reverse()
는 내림차순으로 정렬합니다.
a=[1,2,3,4,5,6]
a.reverse()
print(a)
💎출력💎
[6, 5, 4, 3, 2, 1]
그런데 여기서 한가지 의문이 드는것이 있습니다. 위 코드에서
a=[4,5,6,1,2,3]
으로 설정하고reverse()
를 했을 때 결과값이[3, 2, 1, 6, 5, 4]
로 이상하게 나옵니다. 왜 이런지는 남박사님에게 물어봐야겠어요. 해답은 다음에 기록하겠습니다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기