반응형
리스트(List)란?
- 리스트란 복합 데이터의 집합으로, 이런 데이터 타입을 다른 프로그래밍 언어에서는 배열(Array)이라 부르지만 파이썬에서는 리스(List)라고 말한다.
- 리스트에 저장되는 요소가 모두 같은 타입일 필요는 없으며, 어떤 자료형이든 포함이 가능하다.
- 리스트에는 요소들이 순서대로 저장되며, 각 요소는 0부터 시작하는 인덱스(index)를 사용하여 접근할 수 있다.
- 리스트는 그 값을 변경할 수 있는 mutable(변할 수 있는) 타입이다.
리스트 선언
- 대괄호 [] 로 감싸 주고 각 요소들은 쉼표 , 로 구분한다.
리스트명 = [요소1, 요소2, 요소3, ...]
>>> a = list() # 비어 있는 리스트
>>> a = []
>>> b = [1, 2, 3] # 숫자를 요소값으로 가진 리스트
>>> c = ['Life', 'is', 'too', 'short'] # 문자열을 요소값으로 가진 리스트
>>> d = [1, 2, 'Life', 'is'] # 숫자, 문자을 같이 가진 리스트
>>> e = [1, 2, ['Life', 'is']] # 리스트 안에 리스트 - 2차원 리스트
리스트 요소 선택 - 인덱싱
- 리스트의 특정 요소에만 접근하고 싶을 때에는 0부터 시작하는 인덱스(index)를 사용한다.
- 양의 인덱스는 왼쪽부터 시작하며 음의 인덱스는 오른쪽부터 시작한다.
# 리스트 인덱싱
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[0]
1
>>> a[-1]
['a', 'b', 'c'] # a[-1]은 마지막 요소값인 a[3]를 나타냄
# 리스트를 포함한 2중 인덱싱
>>> a = [1, 2, 3, ['a', 'b', 'c']]
>>> a[-1][0]
'a'
# 리스트에 리스트를 포함한 3중 인덱싱
>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'
리스트 자르기 - 슬라이싱
- 사용법은 문자열 인덱싱과 동일하며, 인덱싱은 요소 1개를 의미하는 반면에 슬라이싱은 글자 구간을 가르킨다.
- :의 앞쪽에 위치한 인덱스는 곧바로 시작 인덱스가 되지만, 콜론의 뒤쪽에 위치한 인덱스는 해당 인덱스에서 1을 뺀 인덱스가 마지막 인덱스가 된다.
- 리스트 자르기는 원본 리스트에는 전혀 영향을 미치지 않으며, 해당 부분에 해당하는 새로운 리스트를 생성하여 반환해 준다.
>>> a = [1, 2, 3, 4, 5]
>>> b = a[:2] # 처음부터 2번전까지
>>> c = a[2:] # 2번째부터 끝까지
>>> b
[1, 2]
>>> c
[3, 4, 5]
# 중첩된 리스트에서 슬라이싱
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5] # 마지막 값은 포함 하지 않음
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2] # a의 3번째 처음부터 2번전까지
['a', 'b']
리스트 연산
- 리스트 더하기 (+)
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
# 숫자와 문자열을 더하고 싶을 때
>>> a = [1, 2, 3]
>>> a[2] + "hi" # 이는 정수와 문자는 더할 수 없기에 오류
>>> str(a[2]) + "hi" # 숫자를 문자열의 형태로 바꿔서 합치기
- 리스트 곱하기 (*)
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
- 리스트 길이 구하기 (len함수)
# len 함수는 문자열, 리스트외에도 튜플과 딕셔너리에도 사용가능
>>> a = [1, 2, 3]
>>> len(a)
3
- 리스트 복사하기
# 단순히 리스트를 변수에 대입하면, 리스트 복사가 아니라 원본 리스트 메모리 주소만 전달됨
>>> a = [1, 2, 3]
>>> copy_a = a
>>> copy_a.append(4)
>>> print(copy_a)
>>> print(a)
[1, 2, 3, 4]
[1, 2, 3, 4]
- 리스트 수정하기
>>> a = [1, 2, 3]
>>> a[2] = 4 # 단순하게 해당 인덱스 설정후, 값 변경
>>> a
[1, 2, 4]
- 리스트 삭제하기
# del 함수 사용해 리스트 요소 삭제하기
>>> a = [1, 2, 3]
>>> del a[1] # del 사용법 : 'del 객체'
>>> a
[1, 3]
# 슬라이싱을 활용한 리스트 여러 요소 한번에 삭제
>>> a = [1, 2, 3, 4, 5]
>>> del a[2:]
>>> a
[1, 2]
리스트 관련 함수들
- 리스트에 요소 1개 추가(append)
>>> a = [1, 2, 3]
>>> a.append(4) # .append(x)는 리스트 맨 마지막에 x 추가
>>> a
[1, 2, 3, 4]
>>> a.append([5,6])
>>> a
[1, 2, 3, 4, [5, 6]] # 리스트에 다시 리스트를 추가한 결과
- 리스트에 요소 여러개 추가(extend)
>>> a = [1,2,3]
>>> a.extend([4,5]) # .extend(x)에서 x에는 리스트만 올 수 있으며,
>>> a # 원래의 a 리스트에 x 리스트를 더하게 된다
[1, 2, 3, 4, 5] # 단순 추가는 append
>>> b = [6, 7]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6, 7]
- 리스트에 요소 삽입(insert)
>>> a = [1, 2, 3] # insert(a, b)는 리스트의 a번째 위치에 b를 삽입
>>> a.insert(0, 4) # append()는 리스트 마지막에 삽입
>>> a
[4, 1, 2, 3] # 파이썬에서는 숫자를 0부터 센다
>>> a.insert(3, 5) # 네 번째 요소 위치에 5 값 삽입
>>> a
[4, 1, 2, 5, 3]
- 리스트 요소 제거(remove)
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3) # .remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수
>>> a
[1, 2, 1, 2, 3] # 3 값을 2개 가지고 있을 경우 첫 번째 3만 제거
>>> a.remove(3)
>>> a
[1, 2, 1, 2] # .remove(3)을 한 번 더 실행하면 다시 3이 삭제
- 리스트 요소 끄집어내기(pop)
>>> a = [1,2,3]
>>> a.pop(1) # 리스트의 x번째 요소를 돌려주고 그 요소는 삭제
2
>>> a
[1, 3]
>>> a = [1,2,3] # .pop() 공백이면 맨 마지막 요소를 보여주고 삭제
>>> a.pop()
3
>>> a
[1, 2]
- 리스트에 포함된 요소 x의 개수 세기(count)
>>> a = [1,2,3,1]
>>> a.count(1) # .count(x)는 리스트 내에 x가 몇개있는지 보여줌
2
- 문자열의 join 함수 사용해 리스트 요소 붙이기(join)
>>> a = ['Life', 'is', 'too', 'short']
>>> ' '.join(a)
'Life is too short'
- 리스트 정렬(sort)
>>> a = [1, 4, 3, 2]
>>> a.sort() # .sort 함수는 리스트의 요소를 순서대로 정렬
>>> a
[1, 2, 3, 4]
>>> a = ['a', 'c', 'b'] # .sort 함수는 숫자와 알파벳 모두 순서대로 정렬한다
>>> a.sort()
>>> a
['a', 'b', 'c']
- 리스트 뒤집기(reverse)
>>> a = ['a', 'c', 'b']
>>> a.reverse() # .reverse 함수는 리스트를 역순으로 뒤집어 준다
>>> a # 리스트 요소를 순서대로 정렬한 후 역순 정렬이 아니라
['b', 'c', 'a'] # 그저 현재의 리스트를 그대로 거꾸로 뒤집는다
- 위치 반환(index)
>>> a = [1,2,3] # .index(x)는 리스트에 x 있으면 x 위치 리턴
>>> a.index(3)
2
>>> a.index(0) # 0은 a 리스트에 존재하지 않기 때문에 오류 발생
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 0 is not in list
Reference
반응형
'Data > Python' 카테고리의 다른 글
[Python] 파이썬 딕셔너리 자료형 - 추가, 삭제, Value 값 찾기, 함수들 (0) | 2023.06.17 |
---|---|
[Python] 파이썬 튜플 자료형 - 인덱싱, 슬라이싱 (0) | 2023.06.17 |
[Python] 파이썬 불리언 자료형 - 참과 거짓, 예시, 함수 (0) | 2023.06.17 |
[Python] 파이썬 문자 자료형 - 인덱싱, 슬라이싱, 내장함수들 (1) | 2023.06.17 |
[Python] 파이썬 숫자 자료형 - 정의, 연산, 숫자 개념 (1) | 2023.06.17 |