728x90
반응형
파이썬 실습창을 열 수 있습니다.실습창 열기
1. 순서열 공통 연산
str, list, tuple, range 등과 같은 순서열(sequence) 범주의 오브젝트에 공통으로 사용되는 연산이 있습니다.
공통 연산은 a[2:10:3]와 같이 분할 연산자를 오브젝트 뒤에 붙여서 사용합니다.
a의 인덱스 2부터 인덱스 10 앞까지 3 간격으로 아이템을 추출하는 연산입니다.
a의 인덱스 2, 5, 8의 아이템이 추출됩니다.
읽기는 'a, 인덱스2, 콜론10, 콜론3'
아래의 표는 공통 연산을 정리한 것입니다.
철저하게 연습하세요.(코딩은 손가락)
'예'를 입력하여 '결과'와 같이 출력되는 것을 확인하고, 이유도 분석하세요.
번호 | 구분 | 예 | 결과 |
1 | s[i] 색인(indexing) |
s=[0,1,2,3,4,5] a=s[3] b=s[-2] |
a=3 :index 3의 내용 b=4 :끝에서 2번째 내용 |
2 | s[i:j] 분할(slicing) |
s=[0,1,2,3,4,5] a=s[1:4] b=s[:4] c=s[4:] d=s[-4:] e=s[:] f=[0,1,2,3,4,5][1:4] |
a=[1, 2, 3] :index 1부터 3까지 b=[0, 1, 2, 3] :index 0부터 3까지 c=[4, 5] :index 4부터 끝까지 d=[2, 3, 4, 5] :뒤에서 4번째부터 끝까지 e=[0, 1, 2, 3, 4, 5] :전부 f=[1, 2, 3] |
3 | 확장 분할 s[i:j:stride] |
s=[0,1,2,3,4,5] a=s[1:4:2] b=s[4:1:-2] c=s[::2] d=s[::-2] e=s[:3:1] f=s[:3:-1] g=s[3::1] h=s[3::-1] |
a=[1, 3] :index 1부터 3까지 2씩 건너뛴다. b=[4, 2] :index 4부터 2까지 2씩 건너뛴다. c=[0, 2, 4] d=[5, 3, 1] :역순이다. e=[0, 1, 2] :i를 0으로 인식한다. f=[5, 4] :i를 마지막 index로 인식한다. g=[3, 4, 5] :3부터 끝까지 h=[3, 2, 1, 0] :3부터 처음까지 증가값이 음수이면 거꾸로 진행한다. 첫째 인수는 0, 마지막은 –1이다. |
4 | 원소 연산 len(s) min(s) max(s) sum(s [,initial]) all(s) any(s) |
s=[0,1,2,3,4,5] a=len(s) b=min(s) c=max(s) d=sum(s) e=sum(s,5) |
a=6 :s의 원소는 6개이다. b=0 :s의 가장 작은 값은 0이다. (최소 값) c=5 :s의 가장 큰 값은 5이다. (최대 값) d=15 :s의 원소 합계는 15이다. e=20 :초기값 5에 합을 더하면 20이다. all(s): s의 모든 원소 True 검사 any(s):s의 아무 원소나 True 검사 |
5 | range 적용 |
s=range(1,11,2) a=sum(s) b=sum(s[1:3]) |
a=25 :1,3,5,7,9의 합은 25이다. b=8 :index 1에서 2까지의 합(3+5=8)이다. |
6 | 원소 판단 x in s x not in s |
s=[0,1,2,3,4,5] a=5 in s b=5 not in s c=‘gg’ in 'eggs' |
a=True :5는 s의 원소이다. b=False :5는 s의 원소가 아니다. c=True :‘gg'는 ’eggs'의 원소이다. |
- indexing(인덱싱)은 1개의 item, slicing(슬라이싱)은 2개 이상의 item을 연산합니다.
- bool 검사(참, 거짓 판단)은 (0과 blank object)는 False, 그 외는 True입니다.
- index는 왼쪽에서 오른쪽으로 는 0부터 헤아리고, 오른쪽에서 왼쪽은 -1(마이너스 1)부터 헤아립니다.
2. list형의 대입, 삭제, 비교 연산
순서열 범주에서 item의 대입, 삭제, 비교 등 변경 가능한(mutable) 형은 list입니다.
str, tuple, range 형은 변경이 불가능(immutable)합니다.
다음 표는 변경 가능한(mutable) list형에 사용할 수 있는 연산들 정리한 것입니다.
철저하게 연습하세요.(코딩은 손가락)
'예'를 입력하여 '설명'과 같이 출력되는 것을 확인하고, 이유도 분석하세요.
번호 | 구분 | 예 | 결과 |
1 | 분할 대입 s[i]=x s[i:j]=r s[i:j:stride]=r |
s=[0,1,2,3,4,5] s[1]=7 s[1:3]=[7,8] s[1:3]=[7] s[1:3]=[7,8,9] s[::]=[7,8,9] s[1:5:2]=[7,8] s[5:1:-2]=[7,8] |
s=[0, 7, 2, 3, 4, 5] s=[0, 7, 8, 3, 4, 5] s=[0, 7, 3, 4, 5] s=[0, 7, 8, 9, 3, 4, 5] s=[7, 8, 9] s=[0, 7, 2, 8, 4, 5] s=[0, 1, 2, 8, 4, 7] |
2 | 분할 삭제 del s[i] del s[i:j] del s[i:j:stride] |
s=[0,1,2,3,4,5] del s[1] del s[1:4] del s[:4] del s[4:] del s[:] del s[1:4:2] del s[4:1:-2] del s[::2] del s[::-2] |
s=[0, 2, 3, 4, 5] s=[0, 4, 5] s=[4, 5] s=[0, 1, 2, 3] s=[] s=[0, 2, 4, 5] s=[0, 1, 3, 5] s=[1, 3, 5] s=[0, 2, 4] |
3 | 순서열 비교 | s=[1,3,5,7] t=[2,4,6] a=s>t |
a=False |
- 순서열 비교는 item을 순차적으로 크기를 비교합니다. item 개수가 작은 쪽의 끝까지 같으면 개수가 많은 쪽이 큰 것입니다. 위의 예에서는 1과 2를 비교하여 1이 2보다 크지 않으므로 거짓(False)으로 평가합니다.
3. range 형의 대입 연산
range 형의 item을 순차적으로 왼쪽의 변수들에 바인딩하는 프로그램입니다.
실습하여 확인하세요.
번호 | range | 출력 | 설명 |
1 | a,b,c,d,e=range(1,10,2) print(a,b,c,d,e) |
1 3 5 7 9 | 1부터 9까지 2씩 증가한 정수를 출력한다. 9는 10보다 1이 작은 수이다. 주의하여야 한다. |
2 | a,b,c=range(2,5) print(a,b,c) |
2 3 4 | stride(증가값)가 생략되어 1로 간주하다. 2부터 4까지 1씩 증가 된 값이 생성된다. |
3 | a,b,c=range(3) print(a,b,c) |
0 1 2 | i=0, stride=1로 간주하여, 0부터 2까지 1씩 증가 된 값이 생성된다. |
철저하게 실습하고 분석한 귀하께 경의를 표합니다.
수고하셨습니다.
오늘 끝.
728x90
반응형
'알고리듬' 카테고리의 다른 글
[알고리듬] #26 매핑과 집합 (0) | 2024.03.29 |
---|---|
[알고리듬] #25 자료형<순서열 정리> (0) | 2024.03.28 |
[알고리듬] #23 자료형<순서열 범주> (1) | 2024.03.28 |
[알고리듬] #22 자료형 <숫자 범주> (1) | 2024.03.27 |
[알고리듬] #21 자료형 <개괄> (1) | 2024.03.27 |