728x90
반응형
11. 시퀀스 자료형 활용
11.1 시퀀스 자료형의 공통 기능 사용하기
# in, not in
>>> a = list(range(0, 100, 10))
>>> print(a)
>>> print(30 in a)
>>> print(30 not in a)
>>> print(100 not in a)
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
True
False
True
# 시퀀스 객체 연결하기
>>> b = [0, 10, 20, 30]
>>> c = [9, 8, 7, 6]
>>> print(b + c)
[0, 10, 20, 30, 9, 8, 7, 6]
>>> list_object = list(range(0, 10)) + list(range(10, 20))
>>> print(list_object)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> tuple_object = tuple(range(0, 10)) + tuple(range(10, 20))
>>> print(tuple_object)
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
# 문자열에 숫자 열결
>>> print('hello, ' + 10)
#TypeError: can only concatenate str (not "int") to str
>>> print('hello, ' + str(10))
hello, 10
# 시퀀스 객체 반복하기
>>> sequence1 = [0, 10, 20, 30] * 3
>>> print(sequence1)
[0, 10, 20, 30, 0, 10, 20, 30, 0, 10, 20, 30]
>>> sequence2 = list(range(0, 5, 2)) * 3
>>> print(sequence2)
[0, 2, 4, 0, 2, 4, 0, 2, 4]
>>> sequence3 = tuple(range(0, 5, 2)) * 3
>>> print(sequence3)
(0, 2, 4, 0, 2, 4, 0, 2, 4)
>>> sequence4 = 'hello, ' * 3
>>> print(sequence4)
hello, hello, hello,
11.2 시퀀스 객체의 요소 개수 구하기
# 시퀀스 객체의 요소 개수 구하기
>>> a = list(range(0, 100, 10))
>>> print(len(a))
10
# 문자열의 길이 구하기
>>> hello = 'Hello, world'
>>> print(len(hello))
12
# 한글, utf-8
>>> hello1 = '안녕하세요'
>>> print(len(hello1))
5
11.3 인덱스 사용하기
>>> a = [38, 21, 53, 62, 19]
>>> print(a[0])
>>> print(a[2])
38
53
>>> b = (38, 21, 53, 62, 19)
>>> print(b[0])
>>> print(b[2])
38
53
>>> c = range(0, 10, 2)
>>> print(c[2])
4
# __getitem__ 메서드 : 시퀀스 객체에서 []를 사용할 때 값을 가져오는 실제 메소드
>>> print(a.__getitem__(1))
21
# 음수 인덱스력(리스트, 튜플 동일)
>>> print(a[-1]) # 리스트의 뒤에서 첫 번째 요소 출력
>>> print(a[-5]) # 리스트의 뒤에서 다섯 번째 요소 출력
19
38
# 인덱스 범위를 벗어나면
>>> print(a[5])
#IndexError: list index out of range
- 요소에 값 할당하기
>>> a = [0, 0, 0, 0, 0]
>>> a[0] = 38
>>> a[1] = 21
>>> a[2] = 53
>>> a[3] = 62
>>> a[4] =19
>>> print(a)
[38, 21, 53, 62, 19]
# 범위를 벗어난 인덱스는 할당 불가
>>> a[5] = 90
IndexError: list assignment index out of range
- 튜플, range, 문자열의 요소 변경 불가
>>> b = (0, 0, 0, 0, 0)
>>> b[0] = 38
TypeError: 'tuple' object does not support item assignment
>>> c = range(0, 10, 2)
>>> r[0] = 3
TypeError: 'range' object does not support item assignment
>>> d = 'hello, world'
>>> d[0] = 'A'
Type Error: 'str' object does not support item assignment
- 요소 삭제하기
>>> a = [38, 21, 53, 62, 19]
>>> del a[2]
>>> print(a)
[38, 21, 62, 19]
11.4 슬라이스 사용하기
# 시퀀스객체[시작인덱스:끝인덱스]
>>> a = list(range(0, 100, 10))
>>> print(a[0:4])
[0, 10, 20, 30]
# 끝까지 가져오려면 '인덱스'활용
>>> print(a[0:10]) # 0:9가 아닌 0:10
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
# 인덱스 1부터 0까지 잘라서 새 리스트르 만듦
>>> print(a[1:1])
[]
# 인덱스 1부터 1까지 잘라서 새 리스트를 만듦
>>> print(a[1:2])
[10]
# 리스트 중간 부분 가져오기
>>> print(a[4:7])
[40, 50, 60]
# 인덱스 4부터 -2까지 요소
>>> print(a[4:-2])
[40, 50, 60, 70]
- 인덱스 증가폭 사용하기
# 시퀀스객체[시작인덱스:끝인덱스:인덱스증가폭]
>>> print(a[2:8:3])
[20, 50]
>>> print(a[2:9:3])
[20, 50, 80]
- 인덱스 생략하기
# 시퀀스객체[:끝인덱스]
# 리스트 처음부터 인덱스 6까지
>>> a = list(range(0, 100, 10))
>>> print(a[:7])
[0, 10, 20, 30, 40, 50, 60]
# 시퀀스객체[시작인덱스:]
# 시작인덱스부터 마지막 요소까지
>>> print(a[7:])
[70, 80, 90]
# 시퀀스객체[:]
# 리스트 전체
>>> print(a[:])
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
- 인덱스 생략하면서 증가폭 사용하기
>>> a = list(range(0, 100, 10))
>>> print(a[:7:2])
[0, 20, 40, 60]
>>> print(a[7::2])
[70,90]
>>> print(a[::2])
[0, 20, 40, 60, 80]
# 리스트 전체
>>> print(a[::])
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
- slice() 객체 사용하기
>>> a = range(10)[slice(4, 7, 2)]
>>> print(a)
range(4, 7, 2)
>>> b = list(range(10))
>>> print(b)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(b[slice(4, 7, 2)])
[4, 6]
>>> c = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> d = slice(4, 7)
>>> print(c[d])
[40, 50, 60]
>>> e = range(10)
>>> print(e[d])
range(4, 7)
>>> c[2:5] = ['a']
>>> print(c)
[0, 10, 'a', 50, 60, 70, 80, 90]
# 시퀀스객체[시작인덱스:끝인덱스:인덱스증가폭] = 시퀀스객체
>>> f = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> f[2:8:2] = ['a', 'b', 'c']
>>> print(f)
[0, 10, 'a', 30, 'b', 50, 'c', 70, 80, 90]
- del로 슬라이스 삭제하기
>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> del a[2:5]
>>> print(a)
[0, 10, 50, 60, 70, 80, 90]
728x90
반응형
'Language > Python' 카테고리의 다른 글
[코딩도장]13~18.if, for, while, break, continue (0) | 2022.03.14 |
---|---|
[코딩도장]12.딕셔너리 (0) | 2022.03.14 |
[코딩도장]10.리스트와 튜플 사용 (0) | 2022.03.14 |
[코딩도장]08~09.불과 비교, 논리 연산자, 문자열 (0) | 2022.03.12 |
[코딩도장]07.출력방법 (0) | 2022.03.12 |