티스토리 뷰
List 1
- 강의 정리(필요하다고 생각되어지는 부분)
- 문제풀이 정리
리스트(List)
1. 시퀀스 자료형(Sequence types)
파이썬(Python)에서는 리스트(List), 튜플(Tuple), range, 문자열(String) 처럼 값이 연속적으로 이어지는 자료형을 시퀀스 자료형(Sequence types)라고 한다.
[시퀀스 자료형의 특징]
데이터를 순서대로 하나씩 나열하여 나타낸 데이터 구조이므로 특정 위치의 데이터를 가리킬 수 있다. 시퀀스 자료형으로 만든 객체를 시퀀스 객체라고 하며 시퀀스 객체에 들어있는 각 값을 요소(Element)라고 한다.
[시퀀스 자료형의 활용]
(1) 특정 값이 있는지 확인 하기
→ (값) in (시퀀스 객체)
→ (값) not in (시퀀스 객체)
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> 30 in a
True
>>> 100 not in a
True
(2) 시퀀스 연결, 반복하기
시퀀스 객체는 + 연산자와 * 연산자를 사용하여 객체를 서로 연결하거나 반복할 수 있다.
>>> a = [0, 10, 20, 30]
>>> b = [9, 8, 7, 6]
>>> a + b
[0, 10, 20, 30, 9, 8, 7, 6]
[0, 10, 20, 30] * 3
[0, 10, 20, 30, 0, 10, 20, 30, 0, 10, 20, 30]
단, range는 + 연산자와 * 연산자로 객체를 연결하거나 반복할 수 없다. 이때는 range를 리스트 또는 튜플로 만든다.
>>> list(range(0, 10)) + list(range(10, 20))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
(3) 시퀀스 길이 세기
✔ len(시퀀스 객체)
(4) 인덱싱
시퀀스 객체의 각 요소는 순서가 정해져 있으며 이 순서를 인덱스라고 한다. 인덱싱(Indexing)을 통해 시퀀스 객체의 요소를 가리켜서 그 요소를 구하거나 다른 값으로 수정하는 등의 작업을 할 수 있다.
>>> a = [a, b, c, d, e, f, g, h]
>>> a[1] # 1번 위치(두 번째)의 요소 가리키기
'b'
>>> a[-1] # -1번 위치(뒤에서 첫 번째)의 요소 가리키기
'h'
(5) 슬라이싱
인덱싱 연산은 단 하나의 요소만을 가리키지만 슬리이싱(Slicing) 연산을 이용하면 일정한 범위의 요소를 선택할 수 있다. 슬라이싱 연산으로 선택할 범위를 지정할 때는 대괄호 속에 콜론(:) 연산자로 시작위치와 종료 위치를 구분하여 표기한다. 이 때 시작위치는 범위에 포함되지만 종료 위치는 포함 되지 않는다. 즉, 시작위치 <= 범위 <= 종료위치
>>> a[2:6] # 2 이상 6 미만 위치의 범위 선택
['c', 'd', 'e', 'f']
>>> a[:3] # 3 미만 위치의 범위 선택 (시작 위치 생략)
['a', 'b', 'c']
>>> a[5:] # 5 이상 위치의 범위 선택 (종료 위치 생략)
['f', 'g', 'h']
>>> a[:] # 전체 범위 선택 (시작, 종료 위치 모두 생략
대괄호 안에 세 번째 값으로 간격(step)을 지정할 수 있다.
>>> a[::2] # 전체 범위에서 두 요소마다 하나씩 선택
['a', 'c', 'e', 'g']
>>> a[1::2] # 1 이상의 범위에서 두 요소마다 하나씩 선택
['b', 'd', 'f', 'h']
>>> a[::-1] # 전체 범위에서 뒤에서부터 한 요소마다 하나씩 선택
['h', 'g', 'f', 'e', 'd', 'c', 'b', 'a']
(6) 요소에 값 할당하기
✔ 시퀀스 객체[인덱스] = 값
단, 튜플, range, 문자열은 불변객체(읽기 전용 객체) 이므로 저장요소를 변경할 수 없다.
(7) 요소 삭제하기
✔ del 시퀀스 객체[인덱스]
단, 튜플, range, 문자열은 불변객체 이므로 저장된 요소를 삭제할 수 없다.
(8) 시퀀스 조작 메서드
아래의 메서드는 시퀀스의 내용을 수정하는 메서드이므로 불변 객체인 튜플, range, 문자열에는 적용할 수 없다.
- append(x) : 리스트의 맨 마지막에 x를 추가
- insert(a, b) : a번째 위치에 b를 삽입
- extend(seq) : 원래의 리스트에 리스트를 더함
- pop() : 리스트의 맨 마지막 요소를 돌려주고 그 요소를 삭제
- remove(x): 첫 번째로 나오는 x를 삭제
- clear() : 모든 요소를 제거
(9) 시퀀스 내장 함수
- sum(a) : 모든 요소의 합
- min(a) : 가장 작은 요소
- max(a) : 가장 큰 요소, 크기를 서로 비교할 수 없을 때는 오류가 발생
2. 리스트 함축(List Comprehension)
대괄호 ('[ ]') 로 감싸고 내부에 for 문과 if 문을 사용하여 조건에 만족하는 것만 리스트로 생성하게 하는 것을 리스트 함축이라 하며 함축적인 코드로 간편하게 리스트를 간편하게 생성할 수 있게 한다.
# 예시
# (1) 리스트 컴프리헨션을 사용하지 않고 0~4 사이의 정수로 리스트를 생성하는 경우
li=[]
for i in range(5):
li.append(i)
# result
[0, 1, 2, 3, 4]
# (2) 리스트 컴프리헨션을 사용하는 경우
[i for i in range(5)]
# result
[0, 1, 2, 3, 4]
# 예시 조건 문을 사용하여 0~4 의 정수 중 짝수인 경우만 리스트로 생성하도록 하는 경우(리스트 함축 사용)
[i for i in range(5) if i%2==0]
# result
[0, 2, 4]
'Algorithm > 알고리즘' 카테고리의 다른 글
[SW Intermediate] List 2 (0) | 2022.09.17 |
---|---|
[SW Intermediate] List 1 - Brute force, Greedy (0) | 2022.09.09 |
[프로그래머스 강의] 23강 힙(Heaps)(2) (0) | 2022.09.06 |
[프로그래머스 강의] 22강 힙(Heaps)(1) (0) | 2022.08.12 |
[프로그래머스 강의] 21강 이진탐색트리(Binary Search Tree)(2) (0) | 2022.07.17 |
- Total
- Today
- Yesterday
- Greedy sort
- CS.
- 자바
- 보험
- 자료구조
- CS 스터디
- 네트워크
- It
- 파이썬
- 정렬
- 이차 리스트
- 프로그래머스
- 리스트함축
- https
- CS
- 완전탐색
- 프로세스 주소공간
- 데이터베이스
- 리스트2
- SW
- 프로그래머스강의
- 운영체제
- 알고리즘
- 코드업 기초
- 리스트 복사
- 스터디
- 자료구조와알고리즘 23강
- 이진탐색
- 리스트
- 연결리스트활용
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |