리스트(LIST)
- 연속된 자료를 표현할 때 사용한다
- 반복이 가능한 형태이다(iterable)
- 0번부터 할당이 된다
- 파이썬의 리스트에는 어떠한 자료형이든 포함이 가능하며 , 리스트, 튜플, 딕셔너리, 세트도 들어갈 수 있다
a = [1, (1,2,3) , {"a":"1"}, set([1,2,3,1,2,3])]
print(a)
- 주소공간의 연속된 공간을 잡아 표현한다 (자료형의 크기만큼 띄워서 자리가 잡힌다)
int형 = 2byte
list = [1,2,3,4]
print(id(list[0]))
print(id(list[1]))
print(id(list[2]))
print(id(list[3]))
리스트가 필요한이유?
- 연속된 자료를 효율적으로 관리하기 위해서
예시) 5명의 사람의 성적을 관리한다고 하자 이때 각 사람들의 성적을 확인하면서 점수가 90점이상인 경우에만
"Great" 라는 문자를 출력해보자
1) 리스트가 없는 경우
- 아래와 같이 각각의 점수마다 if문을 만들어 사용해야하므로 반복적인 코드가 발생한다
2) 리스트가 있는경우
- 다음과 같이 반복문을 이용하여 훨씬 효율적인 코드를 만들어낼 수 있다.
주의할점
1) 미리 사용할 만큼의 크기의 리스트를 주소공간에서 할당 받아야 한다 그렇지 않고 추가를 하려는 경우 에러가 난다
(IndexError: list assignment index out of range)
list = []
list[0] = 1
2) list = [1,2,3,4,5]에서 0,1 인덱스의 원소를 동시에 바꾸고 싶은 경우
- 아래의 내용은 0,1인덱스의 원소를 7,8로 교체하겠다는 말이다
list = [1,2,3,4,5]
list[0:2] = [7,8]
print(list)
=> 결과 : [7,8,3,4,5]
- 아래의 내용은 0번원소를 [7,8] 로 교체하겠다는 뜻이다
list[0] = [7,8]
=> 결과 : [[7,8],2,3,4,5]
사용법
1. 할당
1) 빈배열 생성
- list = []
2) 원하는 만큼 배열의 공간 할당 받기
- list = [0] * 10
list[5] = 10
print(list)
- list = [ i for i in range(10) ]
* list = [1*10]은 list에 1*10한 값을 담아 생성하겠다는 뜻이다
2. 배열원소 추가
- list.append("값")
3. 출력
1) 인덱싱
- 리스트이름["인덱스"]를 통해 해당 주소공간을 참조하여 값을 가져와 리턴
- '0'번 부터 시작
- '-1'은 맨 뒤에서부터 시작
- 리스트이름["인덱스"]
2) 슬라이싱
- ':' 를 이용하여 원하는 만큼 리스트를 잘라 출력
4. 변경
- 리스트이름["인덱스"] = 값
5. 삭제
1) 기본
del list[0]
2) 슬라이싱을 이용
list = [1,2,3,4,5]
del list[0:2]
print(list)
단점
- 리스트 내에서 특정 값을 찾을때 처음부터 일일이 뒤져가며 찾아야 한다.
'Language > Python' 카테고리의 다른 글
Python - 문자열내에 특수문자 존재 확인 (any 메소드) (0) | 2018.12.27 |
---|---|
Python - 전역변수와 지역변수 , Global (2) | 2018.12.17 |
Python - 클래스(Class)란? (0) | 2018.12.17 |
Python - 모듈, 패키지 (0) | 2018.12.17 |
Python - 가상환경 이란? (0) | 2018.12.01 |