본문 바로가기
코딩 어쩌구/자료구조와 알고리즘

[python] 자료구조 : 리스트

by annmunju 2021. 10. 4.

자료구조

여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.

 

리스트(List) 

배열과 같이 여러 개의 데이터를 나열한 자료구조.

 - 각각을 아이템 이라고 호칭.

 - 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이(함께) 저장할 수 있음. 리스트에 또 다른 컨테이너 자료형 데이터 저장 가능

 

1) 리스트 아이템 조회 : 인덱스로

2) 리스트 길이 : len()

3) 반복문 조회

  (1) for x in list + if문 >> 원하는 내용만 출력하거나 출력하지 않도록 설정할 수 있음.

       for idx, value in enumerate(리스트) >> 인덱스와 값 각각 출력 가능해짐. 자동으로 할당됨

  (2) while 조건 >> 조건이 False가 되면 반복문 탈출.

        while True + if ~ : break >> 무한으로 돌 수 있는 while True 상태에서 if문 조건 달성시 break로 탈출

        flag = True ; while flag : if ~ flag = False >> 깃발 True 상태에서 if문 조건 달성시 False로 탈출

 

리스트 수정

1) 아이템 추가

(1) 리스트 변수명.append("추가할 내용") : append 함수로 마지막 인덱스에 아이템을 추가할 수 있다.

(2) 리스트 변수명.insert(인덱스 번호(끼어들 자리), "추가할 내용") : insert 함수로 내가 원하는 특정 위치(인덱스)에 아이템을 추가할 수 있다.

 

2) 아이템 삭제

(1) 리스트 변수명.pop() : 마지막에 있는 아이템을 삭제할 수 있다.

(2) 리스트 변수명.pop(n) : n 위치에 있는 아이템을 삭제할 수 있다.

(3) 리스트 변수명.remove("값") : 지정한 값에 해당하는 아이템을 삭제한다.

* 위 함수들은 한개의 아이템만 삭제 가능하다. 2개 이상의 데이터를 삭제하기 위해서는 while 문으로 삭제하자.

(4) del ls[1] : 인덱스 번호가 1인 아이템 삭제. []는 슬라이싱을 이용해서 변형 가능.

 

3) 리스트 연결

(1) 리스트 변수명(1).extend(리스트 변수명(2)) : 리스트 변수(1)에 리스트 변수(2)가 확장됨.

(2) 리스트 변수명(1)+리스트 변수명(2) : 리스트 변수(1)과 (2)가 연결되어 새로운 리스트가 됨.

 

4) 리스트 아이템 정렬

(1) 리스트 변수명.sort() : 오름차순 정렬.

(2) 리스트 변수명.sort(reverse=True) : 내림차순 정렬.

(3) 리스트 변수명.reverse() : 아이템 순서를 반대로 뒤집음.

 

5) 리스트 슬라이싱

(1) [n:m] : 인덱스 번호가 n <= x < m 인 아이템만 출력.

(2) [ :m] : 0부터 m-1까지 출력 | [n: ] : n부터 끝까지 출력

(3) [n:-m] : n부터 뒤에서 m번째 인덱스 까지 출력

(4) [-n:-m] : 뒤에서 n번째 인덱스에서, 뒤에서 m번째 인덱스 까지 출력

* 문자열도 슬라이싱 가능하다.

(5) 슬라이싱 단계 설정

 - [n:m:o] : n부터 m-1까지 o 간격으로

 - [::o] : 처음부터 끝까지 o 간격으로

 - [n:m:-1] : n부터 m-1까지 거꾸로

(6) 슬라이싱을 이용한 아이템 변경

 - ls[1:3] = ['a', 'b'] >> ls = ['x', 'a', 'b', 'x', ... ]

(7) 슬라이스 함수 : 리스트 변수명.slice(n, m) == ls[n:m]

 

6) 리스트 반복 : 곱셈연산

-  리스트를 곱셈하면 아이템이 곱한 수만큼 반복됨. ls = [a, b] > ls * 2 == [a, b, a, b]

 

7) 리스트 정보알기 함수

(1) index(item) : 아이템의 인덱스 번호를 알 수 있다.

(2) count(item) : 특정 아이템의 갯수를 알아낼 수 있음.

728x90