Python 기초 - 3.리스트

2 분 소요

리스트

변수는 값을 1개만 저장 가능

⇒ 하나의 이름에 값을 여러개 담기 위해 리스트를 사용한다.

예) 반 하나의 점수 관리

  • 변수로 따로 관리할 경우:

      s1=90
    
      s2=70
    
      s3=80
    
      ...
    
      sum=s1+s2+s3+....
    
  • 리스트를 사용할 경우:

    score=[89,67,5,34,65,78,34]
      
    # sum=score[0]+score[1]+score[2]+score[3]+...
      sum=0
      for i in score:
          sum+=i
    

리스트의 속성

리스트의 종류:

  • a = [1,2,3] #list of int
  • b = [‘sdf’, ‘qwer’, ‘dfg’] #list of str
  • c = [12.24, 34.45, 3.14] #list of float
  • d = [True, True, False] #list of bool

리스트의 크기: 방의 개수, 위 예시의 크기는 모두 3

리스트의 요소: 리스트를 구성하는 값 하나

인덱스: 방 번호.

  • 항상 0부터 시작해서 리스트 크기-1 로 끝남. 예) a[0], d[2], b[0:2]

  • a = [1,2,3] 일 때, a[3]=4 이라고 정의해도 방은 추가되지 않는다. 방을 추가하려면, ‘a.append(4)’를 입력해야 방을 확장하고 값을 저장한다.

len(): 요소의 길이를 확인하는 함수

리스트 생성:

e = []
f = list() # 리스트 함수로 생성

*하나의 리스트에 다양한 타입의 값을 담을 수 있다.

  • 파이썬은 타입에 자유로운데, 그 이유는 모든 타입이 참조타입이기 때문.

  • C, C++ 등은 메모리에 직접 접근이 가능 → 용이하지만 잘 다루지 않으면 메모리를 날리기 쉽다-

  • 파이썬은 메모리에 직접 접근하지 않고 참조값을 받고 실제 메모리의 주소를 통해 값을 확인.

  • java, C 처럼 메모리에 직접 접근하면 값에 따라 메모리의 용량이 다르고 서로 다른 메모리 값을 할당 받아야 하기 때문에 타입에 민감하지만, 파이썬은 값을 참조하기 때문에 메모리 용량이 서로 달라도 값을 확인하는데에 문제가 없어서 여러가지 타입을 한번에 작업할 수 있다.

    → 결론적으로, 파이썬에선 여러 타입의 값을 리스트에 넣을 수 있다! 하지만 추후 Java나 C 같은 타입에 민감한 언어를 다루게 되었을 경우 혼선이 생길 수 있고, 파이썬 내부적으로도 코드 구조가 복잡해질 수 있기 때문에 실질적으로 쓸 일이 많지 않고 권장하지 않는다.

리스트 요소의 수정/삭제

변수는 값이 바뀔 수 있다 = 값을 여러번 할당 할 수 있다. → 리스트도 마찬가지. 리스트 요소의 수정/삭제가 가능하다.

요소의 삭제

a = [1,2,3,4,5]
del a[2]  #값만 삭제하고 방을 초기화 시키는 것이 아니라, 방 자체를 삭제 시킨다
del a[1:3]  #범위로 삭제
a.remove(1)  #값을 찾아서 해당 값을 방과 함께 삭제. 값이 없다면 에러.

요소의 위치 확인, 정렬

b = [2,7,4,5,3]
print(b.index(7)) #7이 위치한 인덱스를 출력 (1)
list.sort(b)  #리스트 정렬 -> b = [2,3,4,5,7]

enumerate()

리스트에서 방번호와 요소를 순서대로 추출하는 것을 반복하게 하는 반복자

a = [9,8,7,6,5]
for idx, i in enumerate(a):

아래 형태로도 이용이 가능하다

a = enumerate([9,8,7,6,5])
for idx, i in a:

다차원 리스트

나중에 영상처리를 하게될 경우 각 픽셀의 값을 처리해야 될 경우가 생김.

한 픽셀의 값:

  • rgb 세가지 색 값으로 구분하여 표시

  • r0~255 g0~255 b0~255 ⇒ [255, 255, 255] 한 픽셀의 값

그렇다면 화면을 표현하려면?

[ [[34, 43, 23], [12, 12, 12], [24, 31, 123]],

[[65, 65, 23], [56, 76,154], [12, 112, 32]],

[[123, 43, 156], [23, 1, 43], [34, 154, 99]] ]

픽셀 한 칸 → 한 줄 → 한 면 ⇒ 총 3차원 리스트를 정리해야 함

다차원 리스트: 리스트를 요소로 갖는 리스트 다차원 리스트는 복잡한 구조의 데이터를 표현하기 위해 사용한다.

다차원 리스트의 구조:

a = [[1, 2, 3], [4, 5, 6]]

a[0] == [1, 2, 3]

a[0][2] == 3  # a의 0번째 줄의 2번째 방

다차원리스트의 메모리 구조: 메모리구조

댓글남기기