02. 문자열, 리스트
1. 문자열 추가 함수
A. startswith()함수
B. endswith()함수
C. replace()함수
D. upper(), lower()함수
E. join함수
2. 데이터형 에러
A. 데이터 형 확인 : type(데이터)
>>> type('350')
<class 'str'>
>>> type(350)
<class 'int'>
B. 서로 다른 데이터형을 연산했을 시
'350'+350
Traceback (most recent call last):
File "<pyshell#60>", line 1, in <module>
'350'+350
TypeError: must be str, not int
C. 서로 다른 타입의 데이터를 연산했을 시 출력되는 오류
D. TypeError : 에러명
E. must be str not int : 에러 상세 내용
3. 데이터형 변환
A. 변형할타입(데이터) : int(String데이터), double(int데이터) 등등…
>>> int('350')
350
>>> type(int('350'))
<class 'int'>
B. 서로 다른 타입의 연산
>>> int('350')+350
700
4. 주소가 변하는 데이터, 변하지 않는 데이터
A. 변하는 데이터
>>> hello = '안녕하세요' #hello 문자열형 변수 선언
>>> hello #hello 값 확인
'안녕하세요'
>>> id(hello) #hello 객체 식별자 확인
1817742198344 #데이터 수정 전 객체 주소
>>> hello = '반갑습니다.' #hello 변수 값 데이터 변경
>>> hello #hello 값 확인
'반갑습니다.'
>>> id(hello) #hello 객체 식별자 확인
1817742221696 #데이터 수정 후 객체 주소
B. 변하지 않는 데이터(리스트형 선언[데이터])
>>> hello_list = ['안녕하세요!'] #리스트형 선언
>>> hello_list #리스트 값 확인
['안녕하세요!']
>>> id(hello_list) #리스트 객체 식별자 확인
1817742054984 #데이터 수정 전 객체 주소
>>> hello_list[0] = '반갑습니다.!' #리스트 첫 번째 항목 값 변경하기
>>> hello_list #변경된 리스트 값 확인
['반갑습니다.!']
>>> id(hello_list) #리스트 객체 식별자 확인
1817742054984 #데이터 수정 후 객체 주소(변동없음)
5. 리스트형
A. 리스트형 선언 및 색인
i. 선언
>>> pockets = [4, 6, 1, 9] #4개의 숫자형을 가진 리스트형 선언
>>> pockets #리스트형 변수 값 확인
[4, 6, 1, 9]
>>> type(pockets) #'pockets'변수의 타입 확인
<class 'list'>
ii. 값 확인
>>> pockets[0] #첫 번째 값 확인
4
>>> pockets[-1] #마지막 값 확인
9
>>> len(pockets) #리스트형의 길이 확인
4
iii. 리스트 값 에러(리스트는 배열과 마찬가지로 인덱스가 0부터 시작된다.)
>>> pockets[4]
Traceback (most recent call last):
File "<pyshell#102>", line 1, in <module>
pockets[4]
IndexError: list index out of range
B. 리스트형 데이터 변경하기
>>> pockets
[4, 6, 1, 9]
>>> pockets[0] = 5 #첫 번째 값 변경
>>> pockets #리스트 확인
[5, 6, 1, 9]
C. 리스트 항목 추가하기 : append()함수
i. append()함수는 리스트의 끝에 값을 추가한다.
>>> pockets.append(7) #특정 값 추가하기
>>> pockets #리스트 확인
[5, 6, 1, 9, 7]
D. 리스트 항목 제거하기 : remove()함수
i. remove()함수는 리스트 내의 특정값을 삭제하는데 사용한다.
>>> pockets.remove(1) #특정 값 제거하기
>>> pockets #리스트 확인
[5, 6, 9, 7]
ii. 특정 값을 제거하는 함수이기 때문에 remove()에서 괄호 안에는 특정 수가 들어가야 한다. 인덱스의 번호가 아니다.
E. 리스트 항목 삽입하기 : insert()함수
i. insert()는 색인을 사용하여 특정 위치에 값을 삽입하는데 사용한다.
>>> pockets.insert(1, 3) #두 번째 자리(1)에 3값을 삽입
>>> pockets #리스트 확인
[5, 3, 6, 9, 7]
ii. Insert()함수는 변수를 2개를 다룬다. 첫 번째 자리는 색인, 두 번째 자리는 추가할 값으로 사용한다.
F. 리스트 항목 추출하기 : pop()함수
i. pop()함수는 색인을 활용하여 특정 위치의 값을 제거하는 용도로 사용한다. 제거함과 동시에 해당 값을 출력해 주는 것이 특징이다.
>>> pockets.pop(3) #4번째 인덱스값 출력 후 제거
9
>>> pockets #리스트 확인
[5, 3, 6, 7]
6. 리스트형 데이터 자르기
A. 리스트형 변수명 우측의 대괄호 안에 숫자와 콜론 기호( : )를 이용하여 자르면 된다.
B. 면수명 [start : end]
>>> pockets[1:3] #pockets[1]부터 pockets[2]까지 자르기
[3, 6]
>>> pockets[ : 3] #처음부터 pockets[2]까지 자르기
[5, 3, 6]
>>> pockets[-2 : ] #pockets[-2]부터 끝까지 자르기
[6, 7]
7. 리스트형 복사하기
A. 리스트의 주소가 복사
i. 이 소스 코드는 pockets의 값을 pockets_copy로 복사하는 것이 아니라 pockets라는 변수의 메모리 위치를 pockets_copy에 알려 주고 있는 소스 코드 이다.
ii. 따라서 pockets의 데이터 값을 바꾸게 되면 pockets_copy의 데이터 값도 변하게 되고, 그 반대의 경우도 성립된다.
>>> pockets #현재 값 확인
[5, 3, 6, 7]
>>> pockets_copy = pockets #신규 변수 생성 및 기존 리스트 대입
>>> pockets_copy.append(1) #신규 변수에 1 추가
>>> pockets_copy #신규 변수 값 확인
[5, 3, 6, 7, 1]
>>>
>>> id(pockets) #기존 변수 객체 식별자 확인
1817742054728
>>> id(pockets_copy) #신규 변수 객체 식별자 확인
1817742054728
B. 리스트 값만 복사 사용
i. pockets의 데이터 만을 복사하려 한다면 pockets_real_copy = pockets[ : ]와 같은 식으로 복사를 해야 한다.
ii. 앞서 말했지만 [ : ]의 기호는 객체의 데이터의 처음과 끝을 의미한다.
>>> pockets_real_copy = pockets[ : ] #신규 변수 생성 및 pockets 복사
>>> pockets_real_copy.append(9) #신규 변수에 9 추가
>>> pockets_real_copy #신규 변수 값 확인
[5, 3, 6, 7, 1, 9]
>>> pockets #기존 변수 값 확인
[5, 3, 6, 7, 1]
>>> id(pockets) #기존 변수 객체 식별자 확인
1817742054728
>>> id(pockets_real_copy) #신규 변수 객체 식별자 확인
1817742113608
8. 리스트형 데이터 합치기 & 확장하기
A. 리스트 더하기 연산자( + )기호를 통해 두 개의 리스트를 하나로 합치는 기능을 제공한다.
i. 리스트 더하기 연산
ii.
>>> a = [1, 2, 3] #a리스트 생성
>>> b = [4, 5, 6] #b리스트 생성
>>> c = a + b #c리스트 생성
>>> a #a리스트 값 확인
[1, 2, 3]
>>> b #b리스트 값 확인
[4, 5, 6]
>>> c #c리스트 값 확인
[1, 2, 3, 4, 5, 6]
>>> id(a) #a 객체 식별자 확인
1817742114184
>>> id(b) #b 객체 식별자 확인
1817742054536
>>> id(c) #c 객체 식별자 확인
1817742054792
B. 리스트의 값을 확장하는데 있어서는 기본 내장 함수인 extend() 함수를 사용한다.
>>> a.extend(b) #a리스트 확장
>>> a #a리스트 값 확인
[1, 2, 3, 4, 5, 6]
>>> id(a) #a 객체 식별자 확인
1817742114184
i. 확장 후에도 a라는 객체의 주소는 변하지 않는다.
9. 리스트 삭제를 위한 del문
A. 앞에서 삭제를 하는 함수로 pop()함수를 언급한 적이 있다. del문과 pop()문의 가장 큰 차이점은 pop()문은 해당 색인의 값을 출력 해 주고 삭제를 하지만, del문은 출력을 하지 않고 삭제한다. 또한 del문의 가장 큰 이점 중 하나는 리스트의 일 부분을 제거할 수 있다.
i. 사용 : del 변수[인자값]
>>> a #리스트 값 확인
[1, 2, 3, 4, 5, 6]
>>> del a[0] #리스트 첫 번째 값 삭제
>>> a #리스트 값 확인
[2, 3, 4, 5, 6]
>>> del a[1:3] #리스트의 두 번째부터 세 번쩨까지 값 제거
>>> a #리스트 값 확인
[2, 5, 6]
>>> del a[ : ] #리스트 전체 값 삭제(빈 리스트 만들기)
>>> a #리스트 값 확인
ii. 해당 변수 삭제 : del 변수명
>>> del a #변수 삭제
>>> a
Traceback (most recent call last):
File "<pyshell#220>", line 1, in <module>
a
NameError: name 'a' is not defined
10. 리스트형의 활용
A. 문자열
>>> programming = ['Python', 'Java', 'C++']
#문자열형으로 이루어진 리스트 선언
>>> programming #리스트 값 확인
['Python', 'Java', 'C++']
B. 서로 다른 자료형 추가 가능
>>> programming.append(100) #리스트에 숫자형 100추가
>>> programming.append(3.14) #리스트에 실수형 3.14추가
>>> programming #리스트 값 확인
['Python', 'Java', 'C++', 100, 3.14]
C. 중첩 리스트
>>> nest = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
#3 x 3 2차원 행렬을 중첩 리스트로 선언
>>> nest
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> nest[0]
#리스트 첫 번째 항목 값 확인
[1, 2, 3]
>>> nest[0][0]
#리스트 첫 번째 항목의 첫 번째 항목 확인
1
[ 0, 0 ]
|
[ 0, 1 ]
|
[ 0, 2 ]
|
[ 1, 0 ]
|
[ 1, 1 ]
|
[ 1, 2 ]
|
[ 2, 0 ]
|
[ 2, 1 ]
|
[ 2, 2 ]
|
D. 문자열 리스트
>>> word = '파이썬 문자열 색인' #문자열형 데이터 선언
>>> word[0] #첫 글자 값 확인
'파'
>>> word[-1] #마지막 값 확인
'인'
E. 문자열 리스트 추출
>>> word[ : 3 ] #문자열 처음부터 3번째 글자까지 자르기
'파이썬'
>>> word[4 : ] #문자열 5번째 글자부터 마지막 글자까지 출력
'문자열 색인'
>>> word[ -2 : ] #문자열 끝에서 2번째 글자부터 출력
'색인'
F. 문자열 리스트 변경
i. 1차 변경 시도
>>> word[ -2 : ] #문자열 끝에서 2번째부터 끝까지의 값 확인
'색인'
>>> word[ -2 : ] = '추출' #동일 위치 값 변경 시도
Traceback (most recent call last):
File "<pyshell#268>", line 1, in <module>
word[ -2 : ] = '추출'
TypeError: 'str' object does not support item assignment
형 에러 : 문자열 형 객체는 항목 값을 변경할 수 없습니다.
ü 결과 : 문자열형 자체는 값을 변경할 수 없다.
ii. 2차 변경 시도
>>> word #변수 값 확인
'파이썬 문자열 색인'
>>> id(word) #변수 객체 식별자 확인
2012194015056
>>> word = word[ : -2] + '추출' #신규 객체 생성 및 기존 변수 대입
>>> word #변경 값 확인
'파이썬 문자열 추출'
>>> id(word) #변수 객체 식별자 확인
2012194015152
ü 결과 : 객체를 새로 만든다.
ü word라는 객체 자체를 word의 끝에서 두 번째 까지 문자와 ‘추출’이라는 문자열을 합친다.
ü word = ‘파이썬 문자열’ + ‘추출’
11. 빈 리스트(리스트 초기화)
A. 빈 리스트를 선언하는 방법
i. >>> empty_list_1 = [ ] #아무것도 없는 리스트 생성
>>> type(empty_list_1) #데이터형 확인
<class 'list'>
>>> len(empty_list_1) #리스트 길이 확인
0
ii. 처음부터 아무 것도 없는 리스트로 선언한다.
B. list()함수를 이용하는 방법
i. >>> empty_list_2 = list() #빈 리스트를 함수로 생성
>>> type(empty_list_2) #데이터형 확인
<class 'list'>
>>> len(empty_list_2) #리스트 길이 확인
0
변수명 = list()로 선언하면 아무것도 없는 빈 리스트가 생성된다
'Python' 카테고리의 다른 글
06. 실습 프로젝트 (0) | 2017.09.27 |
---|---|
05. 제어문과 자료형의 조합 (0) | 2017.09.18 |
04. 제어문 (0) | 2017.09.14 |
03. 튜플형, 세트형, 사전형 (0) | 2017.09.09 |
01. Python시작 (0) | 2017.08.31 |