[Python] Chapter7 리스트

4 분 소요

Chapter7 리스트

리스트

  • 같은 의미의 여러 데이터를 순서대로 저장하고 관리해야 할 때 사용
  • 순서 있는 데이터를 저장하기 위한 object
  • 어떠한 데이터 형도 원소 값이 될 수 있음
  • 문자열처럼 인덱싱 (indexing) 과 슬라이싱 (slicing) 이 가능
  • 형식

리스트명 = [원소 1, 원소 2, 원소 3, …]

  • 대괄호 [] 안에 콤마로 구분하여 원소들을 표시
  • 리스트의 각 원소는 변수이며 그 값은 변경가능

  • 리스트 example

      userAges = [21, 22, 23, 24,25]
      a = [1, 2.2, 'python']
      b = [ [" mouse", [8, 4, 6]]# 문자열과 리스트가 원소
      c = list ()# 빈 리스트 c 를 생성
      d = [] # 마찬가지로 빈 리스트 d 를 생성
    

리스트 indexing

  • 인덱스 값을 통해 리스트의 각 원소가 가리키고 있는 값에 접근할 수 있음
  • indexing 범위 문자열과 동일하게 적용
    • n : 리스트의 크기 , 내장함수 len () 을 통해 구할 수 있음
    • Positive indexing : 0 ~ n 1
    • Negative indexing : n ~ 1
  • 대괄호 [ ] 안에 첨자 (Index) 번호 입력하여 특정 요소의 값을 참조

리스트 slicing

  • 문자열과 동일하게 적용
  • 형식 (L 을 n 개의 원소를 갖는 list 라고 가정)

    L[ b : e : s ] # b = begin, e = end, s = step 을 의미

  • Slicing Rule (b, e  0 인 경우로 설명)
    • s > 0 ( b < e 이어야 함 . 아니면 빈 리스트 생성 )
      • index 를 b 부터 e  1 까지 s 씩 증가하며 리스트를 참조
    • s < 0 ( b > e 이어야 한다 . 아니면 빈 리스트 생성)
      • index 를 b 부터 e 까지 s씩 감소하며 리스트를 참조

slicing 을 이용한 리스트 원소 제거

  • 리스트 a = [0, 1, 2, 3, 4]
  • 원소의 제거

      a[1:3] = [] # a[1], a[2] 제거
      print(a) # [0,3,4]
      a[0] = 1 # a[0] 값을 1 로 변경 (slicing 아님)
      print(a) # [1,3,4]
      a[1:2] = [] # a[1] 제거
      print(a) # [1,4]
      a[1] = [] # a[1] 에 empty list [ ] 를 assign
      print(a) # [ 1, [] ]
      del a[:2] # a[0],a[1] 제거
      print(a) # []
      # del a[:] 는 리스트의 모든 원소를 삭제하고 빈 리스트로 만듦
    

slicing 을 이용한 리스트 원소 교체

  • 리스트 a = [0, 1, 2, 3, 4]
  • 원소의 교체

      a[1::2] = [9,9] # 홀수 인덱스 원소 값을 모두 9 로 교체
      # (item 의 수가 같아야 함 ) [0,9,2,9,4]
      a[1:3] = [1] # a[ 과 a[2] 를 1 로 교체
      print(a) # [0, 1, 9,4]
      a[2:3] = [5, 6] # a[ 를 5, 6 으로 교체
      print(a) # [0,1, 5, 6,4]
      a[3:] = [8,9,10] # a[3] 부터 순서대로 원소를 8,9,10 로 교체
      print(a) # [0,1,5,8,9,10]
    
  • 리스트에서 하나의 원소를 수정 : 인덱스 사용
  • 리스트에서 연속된 원소들 수정 슬라이싱 사용

slicing 을 이용한 리스트 원소 추가

  • 원소의 추가

      a[1:1] = [' a','b ']# index 1 에 a','b 추가 끼워 넣기
      print(a)# [0,'a','b',1,2,3,4]
      a[1:1] = [ ['A','B'] ]# index 1 에 리스트 ['A','B'] 추가
      print(a) # [0,['A','B'],'a','b',1,2,3,4]
      a[5:5]= [5] # a[5] 에 추가
      # [0, ['A','B'], 'a', 'b', 1, 5, 2, 3, 4]
      a[ len (a)]= [ 10]# 리스트 끝에 새 원소 10 을 추가
      # [0, ['A','B'], 'a', 'b', 1, 5, 2, 3,4,10]
    

리스트 복사

  • 리스트 참조 복사하기 (‘=’ 이용 )
  • 참조를 복사 . 즉 , 동일한 객체를 다른 이름으로 참조하게 됨

리스트 복사 (slicing)

A = ['ab', 'cd', ' ef]
B = A[:] # B = A.copy ()
print(id(A), id(B)) # id 가 다름 다른 객체
B[2] = 10
print(A, B)

리스트 연산자

  • Concatenation operator + ( 리스트의 연결 연산)
    리스트들을 연결하여 새로운 리스트로 만듬
  • Repetition Operator * ( 리스트의 반복 연산 )
    list * n 은 list 의 item 들을 n 번 반복하여 새로운 list 를 만듬
  • Membership operator in, not in ( 문자열에서와 동일)

리스트 메소드

method Description (x: 리스트 , a: 임의의 객체)
x.append(a} 데이터 a 를 리스트 x 의 끝에 추가
x.extend (L) 리스트 L 의 모든 원소를 리스트 x 의 마지막에 추가
x.insert (i , a) a 를 리스트 x 의 index i 에 추가
x.remove (a} 리스트 x 에서 원소 값이 데이터 a 인 첫 원소 제거(반환 값 없음)
x.pop( ) x 의 마지막 원소 제거 및 반환
x.pop( i) x[i] 를 x 에서 제거하고 그 값을 반환
x.clear() 리스트 x 의 모든 원소를 삭제 . 빈 리스트가 됨
x.index(a) 리스트 x 에서 원소 값이 a 인 첫 번째 원소의 index 를 반환
x.count(a) 리스트 x 에서 a 값과 같은 원소의 개수를 반환
x.sort () x 의 원소들을 오름차순으로 정렬, 내림차순으로 정렬하려면 x.sort (reverse= True) 사용
x.reverse () x 의 원소들을 역으로 재 배치 (정렬과 다름)
x.copy () a shallow copy of the list (y = x[:] 와 동일)

리스트 관련 내장 함수

  • 문자열 , 튜플 , 집합 , 사전 등도 사용 가능 .
function Description( 인수 x : 리스트)
all(x) x 의 모든 원소가 True( i.e. != 0) 이거나 , 또는 x 가 빈 리스트이면 True 반환
any(x) x 에 True 인 (i.e. != 0 인 ) 원소가 한 개라도 있으면 True, 또는 x 가 빈리스트이면 False 반환
enumerate(x) x 의 모든 원소에 대해 튜플 (index, 원소 값) 을 얻을 수 있는 enumerate object 를 반환 . index = 0, 1, 2,
len (x) x 의 원소 개수를 반환
list(y) Iterable 한 y 를 리스트로 변환하여 반환
max(x) x 의 원소 중 최대 값 반환 비교 불가이면 TypeError
min(x) x 의 원소 중 최소 값 반환 비교 불가이면 TypeError
sorted(x) x 의 원소를 정렬한 리스트 반환 x 는 불변이고 오름차순 또는 내림차순으로 정렬 sorted(x, reverse=True)
sum(x) x 의 원소 합을 반환 더할 수 없으면 TypeError

댓글남기기