Python
sequence types - slice
11mia
2020. 9. 8. 03:04
#1. 객체[startIdx:endIdx] => 객체[startIdx] ~ 객체[endIdx-1] 까지를 잘라냄
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[1:4])
print(a[0:len(a)])
print(a[5:-2])
print(a[2:8:2]) # a[2]부터 2씩 인덱스 증가하면서 a[7]내의 범위에서 slice
print('******************')
print(a[:4]) #start생략. 처음부터 a[3]까지
print(a[5:]) #end생략. a[5]부터 끝까지
print(a[:]) #start,end생략. 전체
print('******************')
print(a[:5:2]) #처음부터 a[4]까지 2인덱스 간격
print(a[3::3]) #a[3]부터 끝까지 3인덱스 간격
print(a[::2]) #전체를 2인덱스 간격으로
print(a[::]) #a[:]와 동일. 즉, 전체
print('******************')
print(a[5:1:-1]) #a[5]~a[2]까지 -1간격
print(a[::-1]) #전체를 역순으로
====Result====
[1, 2, 3]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 6, 7]
[2, 4, 6]
******************
[0, 1, 2, 3]
[5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
******************
[0, 2, 4]
[3, 6, 9]
[0, 2, 4, 6, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
******************
[5, 4, 3, 2]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
a = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
print(a[3:5])
print(a[3:])
print(a[:5])
print(a[3::2])
print(a[:5:3])
====Result====
(3, 4)
(3, 4, 5, 6, 7, 8, 9)
(0, 1, 2, 3, 4)
(3, 5, 7, 9)
(0, 3)
r = range(10)
print(r)
print(r[4:7])
print(r[4:])
print(r[:7])
print(r[:7:2])
====Result====
range(0, 10)
range(4, 7)
range(4, 10)
range(0, 7)
range(0, 7, 2)
str = 'hello, world!'
print(str[4:len(str)])
print(str[:4])
print(str[::2])
====Result====
o, world!
hell
hlo ol!
#2. slice object
s1 = slice(5) #end
s2 = slice(0, 5) #start, end
s3 = slice(0, 5, 2) #start, end, interval
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[s1])
print(a[s2])
print(a[s3])
print('===============')
print(a.__getitem__(s1))
print(a.__getitem__(s2))
print(a.__getitem__(s3))
====Result====
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 2, 4]
===============
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 2, 4]
#3. item assignment
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[0:3] = ['a','b','c']
print(a)
a[7:9] = [10,20,30,40]
print(a)
#interval 지정
#범위의 요소 개수와 할당하는 요소 개수가 정확히 일치해야함
a[2::3] = [0, 0, 0, 0]
print(a)
====Result====
['a', 'b', 'c', 3, 4, 5, 6, 7, 8, 9]
['a', 'b', 'c', 3, 4, 5, 6, 10, 20, 30, 40, 9]
['a', 'b', 0, 3, 4, 0, 6, 10, 0, 30, 40, 0]
a = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
#a[0:3] = ('a','b','c') #TypeError: 'tuple' object does not support item assignment
print(a)
r = range(10)
#r[0:3] = range(10,30) #TypeError: 'range' object does not support item assignment
print(r)
str = "hello world"
#str[0,3] = 'HEL' #TypeError: 'str' object does not support item assignment
print(str)
====Result====
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
range(0, 10)
hello world
#4. item deletion
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del a[0:3]
print(a)
del a[::2]
print(a)
b = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
#del b[0:3] #TypeError: 'tuple' object does not support item deletion
print(b)
r = range(10)
#del r[0:3] #TypeError: 'range' object does not support item deletion
print(r)
str = "hello world"
#del str[0:3] #TypeError: 'str' object does not support item deletion
print(str)
====Result====
[3, 4, 5, 6, 7, 8, 9]
[4, 6, 8]
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
range(0, 10)
hello world