이 챕터에서는 파이썬 내장 시퀀스 타입을 살펴본다.
시퀀스 타입은 멤버쉽 연산(in 키워드), 크기 함수(len()), 슬라이싱(value[:-1]), 반복성 을 가진다.
파이선에서는 문자열, 튜플, 리스트, 바이트 배열, 바이트 5개의 내장 시퀀스 타입이 있다.
깊은 복사와 슬라이싱 연산
가변 객체
- 파이썬에서 불변 객체로는 숫자, 튜플, 문자열, 바이트 가 있다. 가변 객체로는 리스트, 바이트 배열 등이 있다.
파이썬의 모든 변수는 객체 참조를 한다. 즉, 가변 객체를 복사할 때는 매우 주의해야 한다.
1 | a = [1, 2, 3] |
위의 코드에서, b 변수가 가리키는 값을 변경했는데, a가 가리키는 리스트의 값도 바뀌는 것을 볼 수 있다. 이는 가변 객체에 할당된 변수의 값은 객체의 위치를 담고 있기 때문이다. 즉 b = a 를 수행하면 b에는 a 가 가리키는 위치가 할당되게 되고, b와 a는 같은 곳을 가리키게 된다.
깊은 복사
- 리스트, 셋, 딕셔너리의 깊은 복사는 다음과 같이 할 수 있다.
1 | # 리스트의 깊은 복사 |
만약 가변 객체에 가변 객체가 들어있는 형태, 예를 들어,
a = [1,[1,2,3]]
이런 형태라면, 안쪽의 가변 객체까지 완전히 복사해주는 메서드를 사용해야 한다.
1 | import copy |
문자열
파이썬에서 모든 문자열은 유니코드이다.
문자열 메서드
join()
- 리스트에 있는 모든 값을 하나의 단일 문자열로 결합하는 메서드
1 | a = ['a', 'b', 'c'] |
split()
- 문자열의 값을 리스트로 분리해서 반환
1 | a = "a!b!c" |
index(), find()
- A.index(sub, start, end)
- start - end 범위에서 sub의 인덱스를 찾아 반환
- 실패시 ValueError 예외 발생
- A.find(sub, start, end)
- start - end 범위에서 sub의 인덱스를 찾아 반환
- 실패시 -1 반환
다음 포스트에서는 튜플, 리스트, 바이트와 바이트 배열에 대해 정리할 것이다.