[파이썬] Sequence Types - Sequence

sequence type - list, tuple, range

공통 시퀀스 연산

이 표는 우선순위에 따라 오름차순으로 시퀀스 연산들을 나열합니다. 표에서, s 와 t 는 같은 형의 시퀀스고, n, i, j, k 는 정수이고, x 는 s 가 요구하는 형과 값 제한을 만족하는 임의의 객체입니다.

in 과 not in 연산은 비교 연산과 우선순위가 같습니다. + (이어 붙이기)와 * (반복) 연산은 대응하는 숫자 연산과 같은 우선순위를 갖습니다.

연산 결과 노트
x in s s 의 항목 중 하나가 x 와 같으면 True, 그렇지 않으면 False (1)
x not in s s 의 항목 중 하나가 x 와 같으면 False, 그렇지 않으면 True (2)
s + t s 와 t 의 이어 붙이기 (3)
s * n 또는 n * s s 를 그 자신에 n 번 더하는 것과 같습니다 (4)
s[i] s 의 i 번째 항목, 0에서 시작합니다
s[i:j] s 의 i 에서 j 까지의 슬라이스 (5)
s[i:j:k] s 의 i 에서 j 까지 스텝 k 의 슬라이스 (6)
len(s) s 의 길이 (7)
min(s) s 의 가장 작은 항목 (7)
max(s) s 의 가장 큰 항목 (7)
s.index(x[, i[, j]]) (인덱스 i 또는 그 이후에, 인덱스 j 전에 등장하는) s 의 첫 번째 x 의 인덱스 (8)
s.count(x) s 등장하는 x 의 총수 (9)
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
days = ['Mon', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
time_zone = ['morning', 'afternoon', 'evening', 'night']

# (1)
print(3 in numbers) # -> True

# (2)
print(10 not in numbers) # -> True

# (3)
print(numbers + days) 
# -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'Mon', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']

# (4)
print(time_zone * 2)
# -> ['morning', 'afternoon', 'evening', 'night', 'morning', 'afternoon', 'evening', 'night']

# (5)
print(numbers[2:5]) 
# -> [2, 3, 4]

# (6)
'''
s[i:j:k] 
0 <= n < (j-i)/k
인덱스 x = i + n*k
i, i+k, i+2*k, i+3*k
'''
print(numbers[2:5:2]) 
# -> 인덱스 x = 2, 4, {6}...
# -> [2, 4]

# (7)
print(len(numbers)) # -> 10
print(min(numbers)) # -> 0
print(max(numbers)) # -> 9

# (8)
print(numbers.index(8, 5, 10)) # -> 8

# (9)
print(days.count('Mon')) # -> 2

가변 시퀀스 형

표에서 s 는 가변 시퀀스 형의 인스턴스이고, t 는 임의의 이터러블 객체이며, x 는 s 가 요구하는 형 및 값 제한을 충족시키는 임의의 객체입니다

연산 결과 노트
s[i] = x s 의 항목 i 를 x 로 대체합니다 (1)
s[i:j] = t i 에서 j 까지의 s 슬라이스가 이터러블 t 의 내용으로 대체됩니다
del s[i:j] s[i:j] = [] 와 같습니다 (2)
s[i:j:k] = t s[i:j:k] 의 항목들이 t 의 항목들로 대체됩니다
del s[i:j:k] 리스트에서 s[i:j:k] 의 항목들을 제거합니다
s.append(x) 시퀀스의 끝에 x 를 추가합니다 (s[len(s):len(s)] = [x] 와 같습니다) (3)
s.clear() s 에서 모든 항목을 제거합니다 (del s[:] 와 같습니다) (4)
s.copy() s 의 얕은 복사본을 만듭니다 (s[:] 와 같습니다) (5)
s.extend(t) 또는 s += t t 의 내용으로 s 를 확장합니다 (대부분 s[len(s):len(s)] = t 와 같습니다) (6)
s *= n 내용이 n 번 반복되도록 s 를 갱신합니다 (7)
s.insert(i, x) x 를 s 의 i 로 주어진 인덱스에 삽입합니다 (s[i:i] = [x] 와 같습니다) (8)
s.pop() or s.pop(i) i 에 있는 항목을 꺼냄과 동시에 s 에서 제거합니다 (9)
s.remove(x) s[i] 가 x 와 같은 첫 번째 항목을 s 에서 제거합니다 (10)
s.reverse() 제자리에서 s 의 항목들의 순서를 뒤집습니다 (11)
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
days = ['Mon', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
time_zone = ['morning', 'afternoon', 'evening', 'night']

# (1)
numbers[1:3] = time_zone;
print(numbers)
# -> [0, 'morning', 'afternoon', 'evening', 'night', 3, 4, 5, 6, 7, 8, 9]

# (2)
del numbers[0:5] 
print(numbers) # -> [5, 6, 7, 8, 9]

# (3)
numbers.append(10)
print(numbers) # -> [5, 6, 7, 8, 9]

# (4)
time_zone.clear()
print(time_zone) # -> []

# (5)
days_copy = days.copy()
print(days_copy) # -> ['Mon', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']

# (6)
days.extend(time_zone);
print(days)
# -> ['Mon', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun', 'morning', 'afternoon', 'evening', 'night']

# (7)
double_time = time_zone * 2
print(double_time)
# -> ['morning', 'afternoon', 'evening', 'night', 'morning', 'afternoon', 'evening', 'night']

# (8)
numbers.insert(3, 10)
print(numbers) # -> [0, 1, 2, 10, 3, 4, 5, 6, 7, 8, 9]

# (9)
time_zone.pop()
print(time_zone) # -> ['morning', 'afternoon', 'evening']

# (10)
days.remove('Mon')
print(days) # -> ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']

# (11)
numbers.reverse()
print(numbers) # -> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

links

social