[파이썬(Python)] 자료형 - linked list (iterable) - 리스트
2022. 10. 12. 17:35ㆍ파이썬
Iterable: 반복 가능한, 순서가 있는
List [ ]: mutable
리스트는 비어있을 수도 있고, 숫자나 문자를 요솟값으로 가질 수도 있고, 리스트를 요솟값으로 가질 수도 있고...
즉, 모든 자료형이 리스트의 요솟값이 될 수 있다.
a = [1, 2, 3] b = ['a', 'b', 'c'] c = [1, 2, 'a'] d = [1, [2, 3], 4]
- 인덱싱
a = [1, 2, 3] >>> a[0] 1 >>> a[2] 3 >>> a[-1] # 문자열 인덱싱처럼 3
그러면 리스트 안에 리스트가 있는 경우(이중 리스트) 인덱싱이 어떻게 될까?
a = [1, 2, [3, 4, 5]] >>> a[2] [3, 4, 5] # 그러면 'a[2]' 자체가 또다른 리스트니까, 'a[2]'[0] 이 3이 된다! >>> a[2][2] 5
혹시 문자열 인덱싱까지 쓸 수 있을까?
a = ["python"] >>> a[0] "python" # 'a[0]' 은 문자열이니까,'a[0]'[0] 은 p가 될거야 >>> a[0][1] 'y'
- 슬라이싱
문자열처럼 슬라이싱 가능! 슬라이싱 결과물은 또다른 리스트가 된다.
a = [1, 2, 3, 4, 5] b = a[1:3] c = a[:2] >>> b [2, 3] >>> c [1, 2]
- 리스트 연산
문자열과 동일하다.
리스트를 더한다고 값이 더해지는게 아님!
a = [1, 2, 3] b = [4, 5, 6] >>> a + b [1, 2, 3, 4, 5, 6] >>> a * 2 [1, 2, 3, 1, 2, 3]
- len 함수 (리스트 길이 구하기)
a = [0, 1, 2, 3, 4 ,5] >>> len(a) 6
len 함수의 결과값은 int형이다.
- 리스트 값 수정 및 삭제
리스트는 mutable (문자열은 immutable) 하므로 수정 가능!
a = [1, 2, 3] a[2] = 100 >>> a [1, 2, 100]
어 그러면 리스트니까 리스트의 문자열도 수정이 되나..? -> 안됨. 문자열은 immutable하니까
a = [1, 2, 'abc'] a[0] = 3 >>> a [1, 2, 3] b = [0, 5, 'ten'] b[2] = 'nine' >>> b [0, 5, 'nine'] c = ['a', 'ab', 'abc'] c[2][0] = 'd' ###################### TypeError
리스트 인덱스를 이용해 요소 삭제하기
a = [1, 2, 3] del a[1] >>> a [1, 3] b = [1, 2, 3, 4, 5] del b[:2] >>> b [3, 4, 5]
- 리스트 관련 함수
리스트 변수 뒤에 '.함수명()' 을 붙여서 리스트 관련 함수들을 사용할 수 있다.
append, sort, reverse, index, insert, remove, pop, count, extend
# append (요소 추가) a = ['a', 'b', 'c'] a.append('d') # 항상 맨 마지막에 요소 추가 >>> a ['a', 'b', 'c', 'd'] # sort (정렬) b = [1, 3, 4, 0] c = ['A', 'c', 'a', 'D'] # 아스키 코드를 기준으로 정렬되는 것 b.sort() c.sort() >>> b [0, 1, 3, 4] >>> c ['A', 'D', 'a', 'c'] # reverse (역, 현재의 순서를 역순으로) a = [0, 3, 2, 5, 6] a.reverse() >>> a [6, 5, 2, 3, 0] # index (인덱스 반환) a = [5, 'a', 6, 8] >>> a.index(5) 0 >>> a.index('a') 1 >>> a.index(4) ValueError: ~~~ # insert (요소 삽입) insert(a, b): a번째 위치에 b 삽입 a = [1, 2, 3] a.insert(1, 1) >>> a [1, 1, 2, 3] # remove (요소 제거) remove(x): x를 삭제하는데, 가장 앞에 있는 x를 삭제 a = [1, 3, 1, 3, 1, 3] a.remove(3) >>> a [1, 1, 3, 1, 3] # pop (팝!) pop(): 마지막 요소를 반환, 리스트에서 삭제, pop(x): 인덱스 x번째 요소 반환, 리스트에서 삭제 a = [1, 2, 3, 4] >>> a.pop() 4 >>> a [1, 2, 3] >>> a.pop(0) 1 >>> a [2, 3] # count (개수 세기) count(x): 리스트 안에 x가 몇 개 있는지 세기 # 단, 리스트의 요소 기준이고, 요소의 요소 같은건 못 센다 a = ['a', 'b', 'c', ['a', 'a']] >>> a.count('a') 1 # extend (확장) extend(x): x는 리스트만 가능, 원래의 리스트에 x 리스트 더해서 확장 a = [1, 2, 3] a.extend(['a', 'ab', ['abc']) >>> a [1, 2, 3, 'a', 'ab', ['abc']]
*** 참고
dir(structure): 사용할 수 있는 함수들이 출력된다!
>>> dir(list) ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
*** operator와 operand (연산자와 피연산자)
*** 자료구조를 왜 쓰는지!
'파이썬' 카테고리의 다른 글
[연산자] Shift 및 조건문 한줄로 나타내기 (0) | 2022.10.18 |
---|---|
[조건문] - if (0) | 2022.10.18 |
[파이썬(Python)] 자료형 - 튜플(Tuple), 집합(Set), 딕셔너리(Dictionary) (0) | 2022.10.14 |
[파이썬(Python)] 자료형, 문자열 (1) | 2022.10.11 |