* 이 포스트는 "파이썬 프로그래밍으로 지루한 작업 자동화하기" 의 내용을 참조해서 작성하였습니다.
* 파이썬 3.3을 기준으로 작성하였습니다.
리스트
- 순서를 가진 여러 가지 값의 배열
- [] (대괄호) 로 표기
- 쉼표를 구분자로 하여 리스트에 아이템들을 초기화 할 수 있음
- 아이템들의 타입이 달라도 상관 없음
>>> [1, 2, 3]
>>> ['a', 'b', 'c']
>>> [1, True, 'A', [1, 2, 3]]
인덱스를 이용해서 리스트의 개별 아이템 얻기
리스트 이름에 대괄호를 사용해서 0부터 시작하는 정수로 순차적인 접근이 가능하다.
>>> test = ['a', 'b', 'c']
>>> test[0]
'a'
>>> test[1]
'b'
>>> test[2]
'c'
리스트 값의 개수를 초과하는 인덱스를 사용하면 IndexError 오류가 발생한다.
인덱스는 정수값만 가능하며, 그 이외의 타입에는 TypeError 오류가 발생한다.
음수 인덱스도 사용이 가능하며, -1은 리스트의 마지막 값을 뜻하고, -2는 리스트의 끝에서 두 번째 값을 의미힌다.
부분 리스트
- 슬라이스를 이용해서 부분 리스트를 얻을 수 있다.
- 리스트 이름 [시작 인덱스 : 포함하지 않는 마지막 인덱스] 으로 정의 한다.
>>> test = ['a', 'b', 'c']
>>> test[0:3]
['a', 'b', 'c']
>>> test[0:2]
['a', 'b']
>>> test [1:3]
['b', 'c']
>>> test [0:-1]
['a', 'b', 'c']
콜론(:)을 기준으로 앞의 값을 비워두면 앞의 값은 0으로 처리된다.
콜론(:)을 기준으로 뒤의 값을 비워두면 뒤의 값은 리스트 길이 혹은 -1로 처리된다.
리스트 변경
인덱스를 지정해서 할당을 하면 값이 변경된다.
>>> test = [1, 2, 3]
>>> test[0] = 'a'
>>> test
['a', 2, 3]
리스트 병합
>>> [1, 2, 3] + ['a', 'b', 'c']
[1, 2, 3, 'a', 'b', 'c']
>>> ['a', 'b'] * 2
['a', 'b', 'a', 'b']
리스트 값 제거
del 명령어를 사용한다.
>>> test = [1, 2, 3]
>>> del test[1]
>>> test
[1, 3]
다중 할당
한 줄의 코드로 리스트 안에 있는 값을 여러 변수에 할당한다.
>>> test = [1, 2, 3]
>>> a, b, c = test
>>> a
1
>>> b
2
>>> c
3
리스트 메소드
메소드는 함수와 기능은 같지만 객체 내에 정의되어 있는 멤버 함수를 메소드라고 한다.
메소드 |
기능 |
index() |
리스트 내에 있는 값의 첫번째 인덱스를 리턴한다. |
append() |
리스트에 새 값을 마지막에 추가한다. |
insert() |
리스트에 새 값을 지정한 인덱스에 추가한다. |
remove() |
리스트 내에서 값을 찾아서 첫번째로 나오는 값을 제거한다. |
sort() |
리스트 안의 값을 정렬한다. (reverse 키워드로 역순 정렬 가능) |
튜플 (tuple)
- 리스트와 비슷하지만 한 번 정의되면 변경이 불가능하다.
- () 로 표기
리스트와 튜플의 전환
list() 함수를 이용하면 튜플에서 리스트를 생성해 준다.
>>> list(('a', 'b', 'c'))
['a', 'b', 'c']
tuple() 함수를 이용하면 리스트에서 튜플을 생성해 준다.
>>> tuple([1, 2, 3])
(1, 2, 3)
참조 전달
정수형, 숫자형, 문자열 값을 매개 변수로 함수를 호출하는 경우, 해당 값은 파라미터 변수로 복사된다.
그 외의 타입을 매개 변수로 함수를 호출하면, 해당 타입의 참조가 파라미터로 전달된다.
(참조 값은 복사되어도 같은 실제 값을 가리키게 된다.)
copy() vs deepcopy()
리스트 등의 데이터의 사본을 만들기 위해서는 copy 라이브러리에 있는 copy() 혹은 deepcopy() 명령어를 사용할 수 있다.
리스트의 모든 아이템이 정수형, 숫자형, 문자열 값으로만 되어 있다면 copy() 를 쓰는 것으로 충분하지만, 아이템에 다른 리스트나 튜플 등이 들어 있다면 deepcopy() 를 사용해야 제대로 사본이 생성된다.
'프로그래밍 > Python' 카테고리의 다른 글
6. 문자열 다루기 (0) | 2019.01.08 |
---|---|
5. 사전 (Dictionary) (0) | 2019.01.07 |
3. 함수 (0) | 2019.01.06 |
2. 흐름 제어 (0) | 2019.01.04 |
1. 파이썬 기초 (0) | 2019.01.04 |