티스토리 뷰

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]
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함