안녕하세요 주니입니다.
파이썬 시퀀스 타입의 연산자들 주제에서 시퀀스 타입이면 공통적으로 사용 할 수 있는 연산자들을 공부했습니다.
이번 주제에서는 mutable 시퀀스 타입들만 사용 할 수 있는 연산자들에 대해서 공부하겠습니다.
대표적인 mutable 시퀀스 타입으로는 list와 string이 있습니다.
mutable 시퀀스 타입 연산자들
아래 테이블에서 s는 시퀀스, t는 다른 시퀀스 그리고 x는 데이터 객체를 의미합니다.
operator | operation | ||||||
---|---|---|---|---|---|---|---|
s[i] = x | s의 i번째 아이템에 x를 대입 | ||||||
s[i:j] = t | s의 i부터j-1에 다른 시퀀스 타입 t를 대입 | ||||||
del s[i:j] | s의 i부터 j-1까지의 아이템을 제거 | ||||||
s[i:j:k] = t | s의 i부터 j-1까지 k계단으로 이뤄진 부분 시퀀스에 t를 대입 | ||||||
del s[i:j:k] | s의 i부터 j-1까지 k계단인 값 들을 s에서 제거 | ||||||
s.append(x) | s의 끝에 x를 추가 | ||||||
s.clear() | s의 모든 아이템 제거 | ||||||
s.copy() | s를 복사한 시퀀스 생성 (shallow copy) | ||||||
s.extend(t) or s += t | s의 끝에 다른 시퀀스 t를 연결 | ||||||
s *= n | s를 n번 반복 | ||||||
s.insert(i, x) | s의 i번째에 x를 삽입 | ||||||
s.pop([i]) | s의 i번째 데이터를 반환하고 s에서 제거 | ||||||
s.remove(x) | s에서 x와 일치하는 첫 번째 데이터 제거 |
조금 더 쉬운 이해를 위해서 코드로 각 기능들을 확인해보겠습니다.
s = [1,2,3] t = "abc" x = 4 s[0] = x print("s[0] = x = ", s) s[0:2] = t print("s[0:2] = t = ", s) del s[0:3] print("del s[0:3] = ", s) s = [1,2,3,4,5] s[0:5:2] = t print("s[0:5:2] = t =", s) del s[0:5:2] print("del s[0:5:2] =", s)
[]를 이용해서 0번째에 x값을 대입했습니다.
그 결과, s의 0번째의 값이 x의 값인 4가 되었습니다.
[:]를 이용해서 s를 0부터 1번째 까지 슬라이싱을 합니다.
그리고, 해당 영역을 t로 치환합니다.
그 결과, s의 [4,2] 가 ['a','b','c']로 치환됐습니다.
del [:]을 이용해서 s의 0번째부터 2번째 까지의 데이터를 제거합니다.
그 결과, 0부터 3까지의 데이터 ['a','b','c']가 제거되고 [3]이 남습니다.
[::]를 이용하여 0번째부터 5번째에서 2칸씩 떨어진 데이터를 t로 치환합니다.
[0:5:2]로 슬라이싱한 [1,3,5]가 [a,b,c]로 치환됩니다.
그 결과, [1,2,3,4,5]가 ['a',2,'b',4,'c']이 됩니다.
여기서 주의할 점은, [::] 로 슬라이싱한 시퀀스의 길이는 치환할 시퀀스 t의 길이와 일치해야 합니다.
del [::]을 이용해서, 0번째부터 5번째에서 2칸씩 떨어진 데이터들을 삭제합니다.
결과적으로, ['a',2,'b',4,'c']에서, ['a','b','c']가 삭제되어 [2,4]가 남습니다.
이어서 남은 연산자들을 코드로 확인하겠습니다.
s = [1,2,3] t = "abc" x = 4 s.append(x) print("s.append(x) = ",s) s.clear() print("s.clear() = ",s) s = [1,2,3] b = s.copy() print("b = s.copy() = ",b) s.extend(t) print("s.extend(t) = ",s) t*=2 print("t*=2 = ",t) s.insert(0,x) print("s.insert(0,x) = ",s) print("s.pop(0) = ", s.pop(0)) print("s = ",s) s.remove(3) print("s.remove(3) = ",s)
append를 이용해서 s의 끝에 x를 추가합니다.
clear를 이용해서 s의 모든 아이템을 제거합니다.
copy를 이용해서 s의 아이템들을 b에 복사합니다.
extend를 이용해서 s에 t를 연결합니다.
*를 이용해서 t를 두 번 반복합니다.
insert를 이용해서 s의 0번째에 x를 추가합니다.
pop을 이용해서 s의 0번째 데이터를 참조합니다.
동시에 s에서 해당 데이터는 제거 됩니다.
remove를 이용해서 s의 아이템중 3을 제거합니다.
만약 제거하려는 아이템이 시퀀스에 존재하지 않으면 ValueError 예외가 발생합니다.
파이썬 mutable sequence operator
Reviewed by Juny
on
7월 25, 2019
Rating:
댓글 없음: