ssoL2 TISTORY

[기초 PYTHON 프로그래밍] 10강. 리스트, 튜플 본문

com/python

[기초 PYTHON 프로그래밍] 10강. 리스트, 튜플

ssoL2 2020. 12. 24. 22:58

- 리스트(list)는 대괄호 []를 사용하여 여러 데이터를 저장할 수 있는 자료형

- 순서가 있고, 인덱스를 이용하여 데이터 접근 가능, 무엇보다 리스트는 mutable 하다

 

score = [80, 90, 75, 88, 92] 인덱스 정리

 

- 리스트는 mutable하기 때문에 수정이 가능하다

ex) score[2] = 78 ; print(score) #[80, 90, 78, 88 ,92] 출력

 

- 슬라이싱(slicing)

 

list의 슬라이싱(slicing) / 앞서 배웠던 문자열 슬라이싱과 개념은 같다.

 

list의 슬라이싱(slicing) 2 / 앞서 배웠던 문자열 슬라이싱과 개념은 같다. 주의 할 것은 B[a:b] 일 때는 a,b 둘다 음수 양수 같이 쓸 수 있지만 왼->오 방향이어야 한다는 것이며, 범위 표현 끝이 양수면 -1한 인덱스까지이고 음수면 +1한 인덱스 까지이다.

 

- 리스트(list)는 + (연결) 과 * (반복) 에 대한 연산이 가능하다.

ex) L = [1,3,5] ; M = [2,4]

     >>> L + M # <대화형 모드>에서 [1,3,5,2,4] 출력

     print(L,M) # [1,3,5] [2,4] 출력

                  # L + M시 L과 M은 절대로 변하지 않고 두 리스트를 연결한 새로운 리스트만 반환하는 것이다.

     >>> L * 3 # <대화형 모드>에서 [1,3,5,1,3,5,1,3,5] 출력

 

- 리스트(list)는 in, not in, len() 도 가능하다.

이는 앞서 배운 문자열 때와 개념은 동일

 

 

- 메소드(method) : 데이터 객체에 대해서 어떤 일을 처리할 수 있도록 하는 코드

- 리스트에서 사용할 수 있는 메소드

 

리스트에서 사용할 수 있는 메소드

 

dir(list)

list에서 사용가능한 메소드 나열


반드시 list.method 형태로 사용해야 한다.

 

리스트에서 사용할 수 있는 메소드 11개

 

- 리스트.메소드 1 : 리스트에 데이터 추가하기

 

list.append(x)

데이터 x를 리스트 끝에 추가한다.

list.insert(i,x)

인덱스 i에 데이터 x를 삽입한다.

ex) L = [1,4,7,8]

     L.append(5)

     print(L) # [1,4,7,8,5] 출력 (데이터 5를 리스트 끝에 삽입)

     L.insert(2,10)

     print(L) # [1,4,10,7,8,5] 출력 (2번째 index에 데이터 10 삽입)

 

 

- 리스트.메소드 2 : 리스트에서 데이터 삭제하기

 

list.pop()

리스트 맨 마지막 데이터를 반환하고 삭제

list.pop(i)

리스트에서 인덱스 i에 있는 데이터를 반환하고 삭제

list.remove(x) 

리스트에서 데이터 x를 삭제하는데, x가 여러개이면 맨 처음 x를 삭제

ex) L = [1,2,3,4,5]

     >>> L.pop() # 5 출력 (리스트 맨 마지막 데이터 5 반환 후 삭제)

     print(L) # [1,2,3,4] 출력

     >>> L.pop(2) # 3 출력 (리스트 2번째 index인 데이터 3 반환 후 삭제)

     print(L) # [1,2,4] 출력

     L.remove(2) 

     print(L) # [1,4] 출력

 

 

- 리스트.메소드 3 : 리스트에서 데이터 위치 찾기 / 데이터 개수 세기

 

list.index(x)

리스트에서 데이터 x의 인덱스 반환 (물론, x가 여러개이면 맨 처음 인덱스 반환)

list.count(x)

리스트에서 데이터 x의 개수 반환

ex) L = ['g', 'a', 'c', 'f', 'g', 'b']

     >>> L.index('f') # 3 출력

     >>> L.count('b') # 1 출력

 

 

- 리스트.메소드 4 : 빈 리스트와 리스트 비우기 

 

list = []

빈 리스트 생성

list.clear()


리스트를 비운다.

ex) A = []

     A.append('red')

     print(A) # [red] 출력

     A.clear() 

     print(A) # [] 출력

 

 

- 리스트.메소드 5 : 리스트 복사하기 ('='을  이용하는 방법과 copy() 메소드)

1. '='을 이용하는 방법

 

'='을 이용하기 / M=L 이라 하면 새로운 객체를 생성해서 복사하는 것이 아닌 새 리스트가같은 객체를 가리키는 것이다.

 

ex) L = [1,3,5,7,9]

     >>> id(L) # <대화형 모드>에서 53794056 출력

     M = L

     M[2] = 100

     print(L) # [1,3,100,7,9] 출력

     print(M) # [1,3,100,7,9] 출력

     >>> id(M) # <대화형 모드>에서 53794056 출력

 

list B = [1,2,3]
listA = listB

새 리스트 listA가 lisB의 같은 객체를 가리킨다.


- 결국 리스트 복사 방법 중 '='으로 사용하는 것은 같은 객체를 가리키는 새 리스트 생성 의미

 

2. copy()

 

copy() / list.copy()를 하면 새로운 리스트가 새로운 객체를 만들어서 가리키는 것이다.

 

ex) L = [1,3,5,7,9]

     >>> id(L) # <대화형 모드>에서 53794216 출력

     N = L.copy()

     N[2] = 100

     print(L) # [1,3,5,7,9] 출력

     print(M) # [1,3,100,7,9] 출력

     >>> id(M) # <대화형 모드>에서 2324360 출력

 

listB = [1,2,3]
listA = listB.copy()

새 리스트 listA가 새로운 객체를 가리킨다.

 

 

- 리스트.메소드 6 : 리스트 연결하기

 

list.extend(M)

M이라는 리스트를 list 뒤에 이어서 연결한다. 따라서 list는 변하게 된다.

ex) L = [1,3,5]

     M = [10,20]

     L.extend(M)

     print(L) # [1,3,5,10,20] 출력

     print(M) # [10,20] 출력

 

 

- 리스트.메소드 7 : 리스트 정렬하기 

 

list.sort()

리스트 오름차순으로 정렬

list.sort(reverse=True)

리스트 내림차순으로 정렬

ex) L = [3,5,1,4,2]

     L.sort()

     print(L) # [1,2,3,4,5] 출력

     L = [3,5,1,4,2]

     L.sort(reverse=True)

     print(L) # [5,4,3,2,1] 출력

 

 

- 리스트.메소드 8 : 리스트 역순으로 바꾸기

 

reverse()

리스트 현재 순서를 역순으로 바꾸기

ex) L = [3,5,1,4,2]

     L.reverse()

     print(L) # [2,4,1,5,3] 출력

 

 


 

 

- 튜플(tuple) : 리스트처럼 여러 데이터를 저장할 수 있는 자료형

- 리스트와 마찬가지로 인덱싱, 슬라이싱 이용 가능하며, (+), (*), in, not in, len() 사용 가능

- 리스트와의 차이점은 []대신에 ()를 사용 + 튜플은 immutable 하다.

 

 

튜플은 immutable하기 때문에 객체 수정 불가능하다.

 

- 튜플(tuple)의 메소드

 

튜플에서 가능한 메소드

 

tuple.method 2가지 1.index(x) 2.count(x)

 

tuple.index()

튜플에서 데이터 x의 인덱스 반환

tuple.count()

튜플에서 데이터 x의 개수 반환

 

- 빈 튜플

 

T = ()

T = tuple()

빈 튜플 생성

 

- 원소가 하나인 튜플 생성

 

T = (1, ) 

S = (1)  #Type이 int로 인식된다. 콤마를 반드시 적어야 tuple로 인식

D = 20,

반드시 콤마가 필요하다. 

A = 1,2,3

B = (4,5,6)

괄호를 치든 안치든 여러개를 나열하면 튜플로 인식된다.

 

- 튜플은 여러 변수에 값 동시에 할당 할 수 있도록 해준다

ex) a,b,c = 1,2,3 or (a,b,c) = (1,2,3) 는 a = 1 ; b = 2 ; c = 3 과 같다

 

- 튜플을 이용한 swap

 

튜플 이용한 swap

 

- 특히 튜플은 함수에서 유용하게 사용됨

- 튜플은 immutable하므로 프로그램 수행 동안 변경하지 않아야 하는 데이터는 튜플로 저장하자.

Comments