[PYTHON] Ch 2-1. 파이썬의 데이터 구조 : 리스트 list()

2023. 2. 15. 07:23IT/PYTHON

인프런에 있는 남박사님의 강의 남박사의 파이썬 기초부터 실전 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]
  • sort()가 오름차순 정렬을 하는것이라면 sort(reverse=True)는 내림차순으로 정렬합니다.
a=[1,2,3,4,5,6]
a.sort(reverse=True)
print(a)
💎출력💎
[6, 5, 4, 3, 2, 1]

여기서 reverse() 함수가 요소의 값을 기준으로 역정렬이라고 오해하기 쉬운데 reverse()는 요소 위치 기준으로 역정렬 하는 함수입니다. 즉, a=[4,5,6,1,2,3]으로 설정하고 reverse()를 했을 때 결과값이 [3, 2, 1, 6, 5, 4]로 이상하게 나옵니다. 요소 0번 위치에 5번의 값이 채워지고, 1번위치에 4번의 값이 역으로 채워지는것입니다. 위치 기준이라는것을 기억하셔야합니다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄